Mouse movement works ! Cleaned up code, added documentation, restructured