             character.moves.pop()
         character.moves.push {
             key: 'startMove',
-            exec: (((char) ->
-                success = @_move(char)
+            exec: (((char, steps) ->
+                success = @_move(char, steps)
                 return {success: success, continueExecution: false}
-                ).bind @, character),
+                ).bind @, character, steps),
             line: line
         }
+        return
+
+    _moving: (character) ->
+        if not character?
+            character = @protagonist
+
+        character.moves.unshift {
+            key: 'moving',
+            exec: ((char) ->
+                success = @_move(char, 1)
+                return {success: success, continueExecution: false}
+                ).bind @, character
+        }
+
+    _move: (character, steps) ->
+        if not character?
+            character = @protagonist
+
+        if isNaN steps
+            throw new @invalidParameterException steps
         for i in [1...steps] by 1
             @_moving(character)
-        return
-
-    _moving: (character) ->
-        if not character?
-            character = @protagonist
-
-        character.moves.push {
-            key: 'moving',
-            exec: ((char) ->
-                success = @_move(char)
-                return {success: success, continueExecution: false}
-                ).bind @, character
-        }
-
-    _move: (character) ->
-        if not character?
-            character = @protagonist
 
         # Top Left: 0,0
         moved = false


    go: (steps, line) =>
        steps = 1 if steps is undefined
        if line is undefined
            line = steps
            steps = 1

        else
            @visual.changeState character.index, 4
        return moved


    checkCanMove: (newX, newY, character) ->
        ###
