         self.package = package
         self.allKeys = [String](kvp.keys)
 
-        guard let tool = kvp["tool"]?.string else {
+        guard let tool = kvp[Option.Tool.rawValue]?.string else {
             self.tool = "invalid"
             fatalError("No tool for task \(qualifiedName); did you forget to specify it?")
         }
         self.tool = tool
 
-        if let ol = kvp["use-overlays"] {
+        if let ol = kvp[Option.UseOverlays.rawValue] {
             guard let overlays = ol.vector else {
-                fatalError("Non-vector use-overlays \(ol); did you mean to use `overlays` instead?")
+                fatalError("Non-vector \(Option.UseOverlays.rawValue) \(ol); did you mean to use `\(Option.Overlays.rawValue)` instead?")
             }
             for overlay in overlays {
                 guard let str = overlay.string else {

    
    private var kvp: [String:ParseValue]

    init?(value: ParseValue, unqualifiedName: String, package: Package, importedPath: String) {
        precondition(!unqualifiedName.characters.contains("."), "Task \(unqualifiedName) may not contain a period.")
        guard let kvp = value.map else { return nil }

                self.overlay.append(str)
            }
        }
        if let ol = kvp[Option.Overlays.rawValue] {
            guard let overlays = ol.map else {
                fatalError("Non-map \(Option.Overlays.rawValue) \(ol); did you mean to use `\(Option.UseOverlays.rawValue)` instead?")
            }
            for (name, overlay) in overlays {

