Mouse input refactor [WIP]