Added the base csharp implementation