             }
 
         }
-        if let ol = type.properties[Keys.Overlays.rawValue] {
+        if let ol = type.properties[Key.Overlays.rawValue] {
             guard let overlays = ol.map else {
                 fatalError("Non-map overlay \(ol)")
             }

        case Tasks = "tasks"
        case Overlays = "overlays"
        case UseOverlays = "use-overlays"
    }
    
    // The required properties.

    }
    
    public init(type: ParseType, overlay requestedGlobalOverlays: [String], pathOnDisk: String) throws {
        //warn on unknown keys
        for (k,_) in type.properties {
            if !Key.allKeys.map({$0.rawValue}).contains(k) {
                print("Warning: unknown package key \(k)")
            }
        }

        if type.name != "package" { throw PackageError.NonPackage }
        self.importedPath = pathOnDisk

        if let value = type.properties[Key.Name.rawValue]?.string { self.name = value }
        else {
            throw PackageError.NoName
        }
        if let value = type.properties[Key.Version.rawValue]?.string { self.version = value }

        if let parsedTasks = type.properties[Key.Tasks.rawValue]?.map {
            for (name, value) in parsedTasks {
                if let task = Task(value: value, unqualifiedName: name, package: self, importedPath: pathOnDisk) {
                    self.tasks[task.unqualifiedName] = task
