             self[3, 1] = newValue.y
         }
     }
-
-    /** Creates a transform that represents a translation in 2d (x,y)
-    
-        let v = C4Vector(x: 1, y: 1)
-        let t = C4Transform.makeTranslation(v)
-    
-    - parameter translation: A `C4Vector` that represents the translation to apply.
-
-    - returns: A `C4Transform` that can be used to apply a translation to a receiver.
-    */
+    
+    /// Creates a transform that represents a translation in 2d (x,y)
+    ///
+    /// ````
+    /// let v = C4Vector(x: 1, y: 1)
+    /// let t = C4Transform.makeTranslation(v)
+    /// ````
+    ///
+    /// - parameter translation: A `C4Vector` that represents the translation to apply.
+    ///
+    /// - returns: A `C4Transform` that can be used to apply a translation to a receiver.
     public static func makeTranslation(translation: C4Vector) -> C4Transform {
         var t = C4Transform()
         t[3, 0] = translation.x
         t[3, 1] = translation.y
         return t
     }
-
-    /** Creates a transform that represents a scale in 3d (x, y, z). The `z` component is optional.
-    
-        let t = C4Transform.makeScale(2.0, 2.0)
-
-    - parameter sx: The amount to scale in the `x` axis
-    - parameter sy: The amount to scale in the `y` axis
-    - parameter sz: The amount to scale in the `z` axis
-
-    - returns: A `C4Transform` that can be used to scale a receiver.
-    */
+    
+    /// Creates a transform that represents a scale in 3d (x, y, z). The `z` component is optional.
+    ///
+    /// ````
+    /// let t = C4Transform.makeScale(2.0, 2.0)
+    /// ````
+    ///
+    /// - parameter sx: The amount to scale in the `x` axis
+    /// - parameter sy: The amount to scale in the `y` axis
+    /// - parameter sz: The amount to scale in the `z` axis
+    ///
+    /// - returns: A `C4Transform` that can be used to scale a receiver.
     public static func makeScale(sx: Double, _ sy: Double, _ sz: Double = 1) -> C4Transform {
         var t = C4Transform()
         t[0, 0] = sx

        self[0, 3] = Double(t.tx)
        self[1, 3] = Double(t.ty)
    }

    /** Creates a new transform from a `CATransform3D` structure.
    
    - parameter t: A `CATransform3D` structure.
    */
    public init(_ t: CATransform3D) {
        self[0, 0] = Double(t.m11)
        self[0, 1] = Double(t.m12)

    return equal
}

/// Transform matrix multiplication
public func * (lhs: C4Transform, rhs: C4Transform) -> C4Transform {
    var t = C4Transform()
    for col in 0...3 {
