adding command builder implementation
refactoring CommandBuilder