split up builder to submodules