refactored generators / added events