Better model abstraction, and some tests, woo!