Updated models, apis, and tests.
More documentation, repr, corner case testing, and proper validation