refactored ctrl event constructor