Initial pass at CSharp client