refactored model objects