threaded for event source