How ti improve this architecture ? - C#