refactor the build system

In case this format works better than Phabricator...
localCatalog not required any more since its passed in as arguments in project-context - would it be more natural to do the same for remoteCatalog?