more flexible
avoid bad situation
stream event types