             self[1, 3] = 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)
+    
+    :param: 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[0, 3] = translation.x
         t[1, 3] = 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)
+
+    :param: sx The amount to scale in the `x` axis
+    :param: sy The amount to scale in the `y` axis
+    :param: 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

            ty: CGFloat(self[1, 3]))
    }
    
    public var transform3D: CATransform3D {
        var t = CATransform3D(
            m11: CGFloat(self[0, 0]),

        t[2, 2] = sz
        return t
    }

    /** Creates a transform that represents a rotation. The `axis` component is optional.

        let t = C4Transform.makeRotation(M_PI)

    :param: angle The angle, in radians, to rotate
    :param: axis The axis around which to rotate, defaults to the z axis {0,0,1}

    :returns: A `C4Transform` that can be used to rotate a receiver.
    */
    public static func makeRotation(angle: Double, axis: C4Vector = C4Vector(x: 0, y: 0, z : 1)) -> C4Transform {
        if axis.isZero() {
            return C4Transform()
