     // MARK: - Unboxing optional values (by key path)
     
     /// Unbox an optional value by key path
-    public func unbox<T: UnboxCompatibleType>(keyPath: String) -> T? {
+    public func unbox<T: UnboxCompatible>(keyPath: String) -> T? {
         return try? self.unbox(keyPath: keyPath)
     }
     

    // MARK: - Unboxing optional values (by key)
    
    /// Unbox an optional value by key
    public func unbox<T: UnboxCompatibleType>(key: String) -> T? {
        return try? self.unbox(key: key)
    }
    

}

/// Protocol used to enable collections to be unboxed. Default implementations exist for Array & Dictionary
public protocol UnboxableCollection: Collection, UnboxCompatible {
    /// The raw collection type that this type can be unboxed from
    associatedtype UnboxRawCollection: Collection
    /// The value type that this collection contains
