be more async for better scaling