Rewrite build tools to be more async and centralized