-start refactoring