refact events
refact some