use struct interface internally instead of struct uloop_fd