refactored events methods