Custom InputManager with events
Clean up and commenting