                     case "{exit_number}": return exit
                     // TODO: Enable once rotary_name exposed in MBRouteStep
                     // case "{rotary_name}": return step.rotaryName ?? ""
-                    case "{lane_instruction}": return "" // TODO: implement correct lane instructions
+                    case "{lane_instruction}": return laneInstruction ?? ""
                     case "{modifier}": return modifierConstant
                     case "{direction}": return directionFromDegree(degree: bearing)
                     case "{nth}": return nthWaypoint // TODO: integrate waypoints

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

    func directionFromDegree(degree: Int?) -> String {

        }

        // Special case handling
        var laneInstruction: String?
        switch type?.description ?? "turn" {
        case "use lane":
            var laneConfig: String? = ""
            if let intersection = step.intersections?.first {
                laneConfig = self.laneConfig(intersection: intersection)
            }
            laneInstruction =
                (((instructions["constants"]) as! NSDictionary)
                    .object(forKey: "lanes") as! NSDictionary)
                    .object(forKey: laneConfig ?? "") as? String

            if (laneInstruction == nil) {
                // If the lane configuration is not found, default to continue
                instructionObject = ((instructions["use lane"]) as! NSDictionary)
                    .object(forKey: "no_lanes") as! NSDictionary
            }

            break
        case "rotary", "roundabout":
            // TODO: Enable once rotary_name exposed in RouteStep
