arranged model classes a bit for better cohesion