#2: Finishing first go at c# impl