first pass at event loop and file descriptor based timer