rework task spawning so that init is async