CSharp: Adding a lot more functionality and getting closer to an spec-compliant version