separated into packages, improved model classes