implement kqueue