make Event and EventQueue their own proper modules