Architecture problem - C#