overhauling different input modes