General Design Thoughts - C#