 import CoreGraphics
 #endif
 
-// MARK: - Type aliases
+// MARK: - API
     
 /// Type alias defining what type of Dictionary that is Unboxable (valid JSON)
 public typealias UnboxableDictionary = [String : Any]
-
-/// Type alias defining a transform type (used internally only)
-public typealias UnboxTransform<T> = (Any) throws -> T?
 
 // MARK: - Unbox functions
 

    func format(unboxedValue: UnboxRawValueType) -> UnboxFormattedType?
}

// MARK: - Default protocol implementations

public extension UnboxableRawType {

}

private extension Unboxable {
    static func makeTransform() -> UnboxTransform<Self> {
        return { try ($0 as? UnboxableDictionary).map(unbox) }
    }
}

private extension UnboxableWithContext {
    static func makeTransform(context: ContextType) -> UnboxTransform<Self> {
        return {
            try ($0 as? UnboxableDictionary).map {
                try unbox(dictionary: $0, context: context)
