okay, thread are so much easier, async io complete