         sharedBot.playingFinish = finish
 
         let timeInterval = 1 / progressPeriodicReport.reportingFrequency
-        let timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: sharedBot, selector: "reportPlayingProgress:", userInfo: nil, repeats: true)
+        let timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: sharedBot, selector: #selector(AudioBot.reportPlayingProgress(_:)), userInfo: nil, repeats: true)
         sharedBot.playingTimer?.invalidate()
         sharedBot.playingTimer = timer
     }


            return outputValues
        }

        let compressedDecibelSamples = averageSamplingFrom(sharedBot.decibelSamples, withCount: finalNumber)

        return compressedDecibelSamples
    }
}

        NSFileManager.audiobot_removeAudioAtFileURL(fileURL)
    }

    public class func compressDecibelSamples(decibelSamples: [Float], withSamplingInterval samplingInterval: Int, maxNumberOfDecibelSamples: Int) -> [Float] {

        func f(x: Int, max: Int) -> Int {
            let n = 1 - 1 / exp(Double(x) / 100)
            return Int(Double(max) * n)
        }

        let decibelSamples = sharedBot.decibelSamples
        var samples: [Float] = []
        var i = 0
        while i < decibelSamples.count {
            samples.append(decibelSamples[i])
            i += samplingInterval
        }

        let finalNumber = f(samples.count, max: maxNumberOfDecibelSamples)

        func averageSamplingFrom(values: [Float], withCount count: Int) -> [Float] {

