refactor user events