Restructure mouse events
Use mouse events