adding a lot of functions to do some work. trying to think of new and better ways to handle movement