changes input system

less user-friendly, but more code-friendly