add more advanced C# version