Architectural advice needed - C#