more tests (from course, we pass them pretty easily)
some unit testing and tweaking of desugaring for regularity
annotations and an explicit exception rather than a type error
dry
visitors on ast nodes