C# POO practices