switched to events from async reading