move shell builder into its own thing