event i/o alternatives