anchor.diff:              else
                   return AdaptiveFunc.Identity
           }
  -        
  -    let controlZoomWithSpeed (speed : ModRef<float>) (m : IMouse) =
  +    /// <summary> Gives a camera an option to move towards or away from the facing direction.
  +    /// right mouse button with mouse y axis movement controls the functionality.</summary>
  +    /// <param name="moveSpeed"> the rate at which the zooming occurs</param>
  +    /// <param name="mouse"> the mouse inputs (this is often pulled from the parent window)</param>
  +    /// <returns>An incremental function that takes a CameraView</returns> 
  +    let controlZoomWithSpeed (moveSpeed : ModRef<float>) (m : IMouse) =
           let down = m.IsDown(MouseButtons.Right)
           let location = m.Position |> Mod.map (fun pp -> pp.Position)
   
  
positive.code:             else
                  return AdaptiveFunc.Identity
          } |> Mod.onPush
  
      let controlPanWithSpeed (speed : ModRef<float>) (m : IMouse) =
          let down = m.IsDown(MouseButtons.Middle)
          let location = m.Position |> Mod.map (fun pp -> pp.Position)
  
          adaptive {
              let! d = down
  
negative.code:             else
                  return AdaptiveFunc.Identity
          }  
      /// <summary> Gives a camera an option to move towards or away from the facing direction.
      /// right mouse button with mouse y axis movement controls the functionality.</summary>
      /// <param name="mouse"> the mouse inputs (this is often pulled from the parent window)</param>
      /// <returns>An incremental function that takes a CameraView</returns> 
      let controlZoom (mouse : IMouse) =
          let down = mouse.IsDown(MouseButtons.Right)
          let location = mouse.Position |> Mod.map (fun pp -> pp.Position)
  
          adaptive {
              let! d = down
  