builder refactoring