             r = ctl.pathPosition[r]!.k
         }
         
-        return EditDistanceContainer(editScripts: traceBack(epc: epc, ctl: ctl, xAxis: xAxis, yAxis: yAxis))
+        return EditDistanceContainer(editScripts: traceBack(epc: epc, ctl: ctl, xAxis: xAxisPointer, yAxis: yAxisPointer))
     }
     
-    private func traceBack<T: Comparable>(epc: [Int: Point], ctl: Ctl, xAxis: [EditDistanceAlgorithmContainer<T>], yAxis: [EditDistanceAlgorithmContainer<T>]) -> [EditScript<T>] {
+    private func traceBack<T: Comparable>(epc: [Int: Point], ctl: Ctl, xAxis: UnsafeMutablePointer<EditDistanceAlgorithmContainer<T>>, yAxis: UnsafeMutablePointer<EditDistanceAlgorithmContainer<T>>) -> [EditScript<T>] {
         var editScript = [EditScript<T>]()
         
         var pxIdx = 0, pyIdx = 0

                return EditDistanceAlgorithmContainer(indexPath: IndexPath(row: secondIdx, section: firstIdx), element: elm)
            }
        }
        let xAxis: [EditDistanceAlgorithmContainer<T>]
        let yAxis: [EditDistanceAlgorithmContainer<T>]
        var ctl: Ctl
        if _from.count >= _to.count {
            xAxis = _to
            yAxis = _from
            ctl = Ctl(reverse: true, path: [], pathPosition: [:])
        } else {
            xAxis = _from
            yAxis = _to
            ctl = Ctl(reverse: false, path: [], pathPosition: [:])
        }
        let offset = xAxis.count + 1
        let delta = yAxis.count - xAxis.count
        let size = xAxis.count + yAxis.count + 3
        var fp = Array(repeating: -1, count: size)
        ctl.path = Array(repeating: -1, count: size)
        ctl.pathPosition = [:]
        
        let xAxisCount = xAxis.count
        let yAxisCount = yAxis.count
        
        var p = 0
        while(true) {

        return (r, max(lsP, rsP))
    }
    
    private func snake<T: Comparable>(xAxis: UnsafeMutablePointer<EditDistanceAlgorithmContainer<T>>, yAxis: UnsafeMutablePointer<EditDistanceAlgorithmContainer<T>>, xAxisCount: Int, yAxisCount: Int, k: Int, y: Int, r: Int) -> (y: Int, point: Point?) {
        var y = y
        var x = y - k
        
