refactoring in progress