implementation and refactoring