         get {
             return player.rate
         }
-        set {
-            player.rate = newValue
-        }
     }
     
     var duration: CMTime {

        if player.currentItem?.status == .readyToPlay {
            player.currentItem?.seek(to: CMTimeMakeWithSeconds(time, preferredTimescale: preferredTimescale), toleranceBefore: CMTime.zero, toleranceAfter: CMTime.zero) { [weak self]
                (completed: Bool) -> Void in
                self?.player.play()
                self?.playerState = .playing
                self?.controls?.setPlayPauseButtonState(isSelected: false)
            }

    }
    
    private func play(at timeInterval: TimeInterval) {
        playAtSelectedPlaybackSpeed()
        lastElapsedTime = timeInterval
        var resumeObserver: AnyObject?
        resumeObserver = player.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 3), queue: DispatchQueue.main) { [weak self]
