split out setup, debouncing and mouse movement into separate files