   }
 
   func parseCompilerOptions(yaml: Yaml) -> ParsingError? {
-    let options = yaml.string
-
-    if options == nil {
+    guard let options = yaml.string else {
       return ParsingError(message: "Invalid (non-string) compiler options")
     }
 
-    self.compilerOptions = options!
+    self.compilerOptions = options
     return nil
   }
   func parseLinkerOptions(yaml: Yaml) -> ParsingError? {
-    if let options = yaml.string {
-      self.linkerOptions = options
-      return nil
-    } else {
+    guard let options = yaml.string else {
       return ParsingError(message: "Invalid (non-string) compiler options")
     }
+
+    self.linkerOptions = options
+    return nil
   }
 
 

  }

  func parseFrameworkSearchPaths(yaml: Yaml) -> ParsingError? {
    if let searchPaths = yaml.array {
      var frameworkSearchPaths = [String]()

      for path in searchPaths {
        if let path = path.string {
          frameworkSearchPaths.append(path)
        } else {
          return ParsingError(message: "Invalid framework search path; expected string")
        }
      }

      self.frameworkSearchPaths = frameworkSearchPaths
      return nil

    } else {
      return ParsingError(message: "Invalid framework search paths; expected array")
    }
  }

  func parsePrecompileCommands(yaml: Yaml) -> ParsingError? {
    var commands = [String]()

    if let precompileCommands = yaml.array {
      for commandYaml in precompileCommands {
        if let command = commandYaml.string {
          commands.append(command)
        } else {
          return ParsingError(message: "Invalid precompile command; expected string")
        }
      }
    } else {
      return ParsingError(message: "Invalid precompile commands; expected array")
    }

    self.precompileCommands = commands

  }

  func parseTargetType(yaml: Yaml) -> ParsingError? {
    guard let typeString = yaml.string else {
      return ParsingError(message: "Invalid target type; expected string")
    }

    guard let type = TargetType.fromString(typeString) else {
      return ParsingError(message: "Invalid target type '\(typeString)'")
    }

    targetType = type
    return nil
  }

  func parseDependencies(yaml: Yaml) -> ParsingError? {
    guard let deps = yaml.array else {
      return ParsingError(message: "Dependencies must be an array")
    }

    for dep in deps {
      if let error = parseDependency(dep) {
        return error
      }
