     @returns A new point, this - other.
     @type Point
     ###
-    subtract: (other) ->
-      Point(this.x - other.x, this.y - other.y)
+    subtract: (first, second) ->
+      this.copy().subtract$(first, second)
+
+    subtract$: (first, second) ->
+      if second?
+        this.x -= first
+        this.y -= second
+      else
+        this.x -= first.x
+        this.y -= first.y
+
+      this
 
     ###*
     Scale this Point (Vector) by a constant amount.

    ###
    equal: (other) ->
      this.x == other.x && this.y == other.y

    ###*
    Calculate the magnitude of this Point (Vector).

      this.x * other.y - other.x * this.y

    ###*
    Computed the Euclidean between this point and another point.
    @name distance
    @methodOf Point#
