refactoring builder