Refactor the models and get them set for real use.

Some fields are required that shouldn't be (e.g. notes), address that in
next commit.