only keep request and event functional