             avPlayer.rate = newValue.rate
             updatePlaybackInfo()
         }
+    }
+
+    var nowPlayingProgress: NowPlayingProgress {
+        return NowPlayingProgress(
+            elapsedTime: avPlayer.currentTime().seconds,
+            duration: avPlayer.currentItem?.asset.duration.seconds ?? 0.0
+        )
     }
 
     init?(itemUrls: [URL], delegate: MediaPlayerDelegate?) {

            _self.seek(to: event.positionTime) {}
            return .success
        }
        remote.changePlaybackPositionCommand.addTarget(self) { player in

        }
    }

    private func addPeriodicTimeObserver() {


    @objc private func updatePlaybackInfo() {
        let isPlaying = avPlayer.rate != 0
        let progress = nowPlayingProgress
        delegate?.updatePlaybackState(isPlaying: isPlaying, progress: progress)
        guard var info = MPNowPlayingInfoCenter.default().nowPlayingInfo else { return }
        info[MPNowPlayingInfoPropertyElapsedPlaybackTime] = progress.elapsedTime
