as a todo for performance, this feels like it could probably be used in a few other places (and maybe should add another API that just goes from build --> app)