Cleaner type system and better JavaDocs