Splitting input management off into its own thing.