add EventLoop struct