STEP 2 - so messy
Movement implemented. needs tons of refactor.