     }
 }
 
-/// Move up to `dn-m/GeometryTools`.
+/// - TODO: Move up to `dn-m/GeometryTools`.
 extension Point {
+
+    /// - TODO: Move up to `dn-m/GeometryTools`.
+    public static func + (lhs: Point, rhs: Point) -> Point {
+        return Point(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
+    }
+    
+    /// - TODO: Move up to `dn-m/GeometryTools`.
+    public static func - (lhs: Point, rhs: Point) -> Point {
+        return Point(x: lhs.x - rhs.x, y: lhs.y - rhs.y)
+    }
+    
+    /// - TODO: Move up to `dn-m/GeometryTools`.
     public subscript (axis: Axis) -> Double {
         return axis == .horizontal ? x : y
     }
+}
+
+/// - TODO: Move up to `dn-m/GeometryTools`.
+func * (point: Point, multiplier: Double) -> Point {
+    return Point(x: point.x * multiplier, y: point.y * multiplier)
+}
+
+/// - TODO: Move up to `dn-m/GeometryTools`.
+func * (multiplicand: Double, point: Point) -> Point {
+    return Point(x: point.x * multiplicand, y: point.y * multiplicand)
+}
+
+/// - TODO: Move up to `dn-m/GeometryTools`.
+func / (point: Point, multiplier: Double) -> Point {
+    return Point(x: point.x / multiplier, y: point.y / multiplier)
+}
+
+/// - TODO: Move up to `dn-m/GeometryTools`.
+func / (multiplicand: Double, point: Point) -> Point {
+    return Point(x: point.x / multiplicand, y: point.y / multiplicand)
 }
 
 /// - returns: A `Set` of 0, 1, or 2 x-intercepts for the given coefficients.

            return abs(denominator) > 0.0000001 ? numerator / denominator : 0
        }
        
        func tAndCompareValue(start: Double, end: Double, for extremum: Extremum)
            -> (t: Double, value: Double)
        {

            return compare(end, start) ? (t: 1, value: end) : (t: 0, value: start)
        }
        
        /// - TODO: Refactor
        func isValid(t: Double, given value: Double, on axis: Axis, for extremum: Extremum)
            -> Bool
        {
