implementing movement methods