refactoring v1