updated with better event and request methods