first working pass at C#