movement via keyboard now mostly handled, needs abstraction though