         var type = step.maneuverType
 
         if (type != "depart" && type != "arrive" && modifier == nil) {
-            // TODO: How to throw error here?
             return nil
         }
 
-        if ((self.instructions.object(forKey: type) as? NSDictionary) == nil ){
+        if (instructions[type] as? NSDictionary == nil) {
             // OSRM specification assumes turn types can be added without
             // major version changes. Unknown types are to be treated as
             // type `turn` by clients

        case "use lane":
            // TODO: Handle
            break
        case let x where x == "rotary" || x == "roundabout":
            if((step.rotaryName != nil) && ((step.maneuverExit != nil)) && (instructionObject.object(forKey: "name_exit") != nil)) {
                instructionObject = instructionObject.object(forKey: "name_exit") as! NSDictionary
            } else if ((step.rotaryName != nil) && (instructionObject.object(forKey: "name") != nil)) {
                instructionObject = instructionObject.object(forKey: "name") as! NSDictionary
            } else if ((step.maneuverExit != nil) && (instructionObject.object(forKey: "exit") != nil)) {
                instructionObject = instructionObject.object(forKey: "exit") as! NSDictionary
            } else {
                instructionObject = instructionObject.object(forKey: "default") as! NSDictionary
            }
            break
        default:

        // Decide which instruction string to use
        // Destination takes precedence over name
        var instruction: String
        if (step.destinations != nil && instructionObject["destination"] != nil) {
            instruction = instructionObject["destination"] as! String
        } else if ((wayName != "") && instructionObject["name"] != nil) {
            instruction = instructionObject["name"] as! String
        } else {
            instruction = instructionObject["default"] as! String
        }

        // Replace tokens
