Mono Support

## WORKING PR, DO NOT ATTEMPT TO MERGE

Just starting the pull request for the mono support. It's not done yet, but it's getting there. Want you guys to be aware of code changes and review as we go, that way when it's done, you can just merge it in. ;-)