Create separated models and refactoring of methods