add new builder + refactoring