By the way, another small nitpick now that I noticed it: the braces in a couple types should be on their own new line.