         // Decide which instruction string to use
         // Destination takes precedence over name
         var instruction: String
-        if ((step.destinations != nil) && instructionObject.object(forKey: "destination") != nil) {
-            instruction = instructionObject.object(forKey: "destination") as! String
-        } else if ((wayName != "") && instructionObject.object(forKey: "name") != nil) {
-            instruction = instructionObject.object(forKey: "name") as! 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.object(forKey: "default") as! String
+            instruction = instructionObject["default"] as! String
         }
 
         // Replace tokens

    
    internal init(version: String) {
        self.version = version
        self.instructions = OSRMTextInstructionsStrings.object(forKey: self.version) as! NSDictionary
    }

    func compile(step: OSRMStep) -> String? {

        let destination = (step.destinations ?? "").components(separatedBy: ",")[0]
        let exit = step.maneuverExit ?? 1 // TODO: ordinalize
        let modifierConstant =
            (((instructions["constants"]) as! NSDictionary)
            .object(forKey: "modifier") as! NSDictionary)
            .object(forKey: modifier ?? "straight") as! String

