Add new C# implementation