asyncBuilder now uses Protocol (needs cleanup)