start abstracting
further abstractions, handle left down and right
Add functions to store input, dump input