Some logic from event listener moved to user service