Initial commit, mostly working except for enums.