Do some refactoring and add rotation and move forward/backward