first swing at model objects. these will likely change...