 
   moveActivePlane : (p) ->
     cam2d.moveActivePlane p
-    @updateRoutePosition p
+    @updateRoute()
 
   #FIXME: why can't I call move() from within this function?
   moveX : (x) -> 
     cam2d.moveActivePlane [x, 0, 0]
-    View.updateRoutePosition [x, 0, 0]
+    View.updateRoute()
 
   moveY : (y) ->
     cam2d.moveActivePlane [0, y, 0]
-    View.updateRoutePosition [0, y, 0]
+    View.updateRoute()
   
   moveZ : (z) ->
     cam2d.moveActivePlane [0, 0, z]
-    View.updateRoutePosition [0, 0, z]
+    View.updateRoute()
 
   prevViewportSize : =>
     (View.camera[VIEW_3D].right - View.camera[VIEW_3D].left)         # always quadratic


  zoomIn : ->
    cam2d.zoomIn(cam2d.getActivePlane())

  #todo: validation in Model
  zoomOut : ->
    cam2d.zoomOut(cam2d.getActivePlane())

  setActivePlaneXY : ->
    View.setActivePlane PLANE_XY

    # calculate the global position of the rightclick
    position = [curGlobalPos[0] - 192/curZoomStep + position[0]/curZoomStep, curGlobalPos[1] - 192/curZoomStep + position[1]/curZoomStep, curGlobalPos[2]]
    unless @curIndex
      @curIndex = 0
    # Translating ThreeJS' coordinate system to the preview's one
    if @curIndex < @maxRouteLen
      @route.geometry.vertices[@curIndex] = new THREE.Vector3(position[0], Game.dataSet.upperBoundary[1] - position[2], position[1])
