C# program structure