     }
 }
 
-extension String: Structured {
+extension String: Unboxing, Boxing {
     public static func unbox(value: AnyObject) -> Unboxed<String> {
         switch value {
         case let v as String: return Unboxed.Success(v)

                        }
                        
                    default:
                        // If we end up here, we were unable to decode it
                        throw NSManagedStructError.StructValueError(message: "Could not decode value for field '\(label)' obj \(valueMaybe)")
                    }

    case StructValueError(message: String)
}

public func toCoreData(context: NSManagedObjectContext)(entity: Boxing) throws -> NSManagedObject {
    
    let mirror = Mirror(reflecting: entity)
    
