split components
async and sync suppor