bug fixes, finished user input abstraction