         return self.player.errorForPlayerOrItem
     }
     
-    public func seek(to time: TimeInterval) {
+    open func seek(to time: TimeInterval) {
         let cmTime = CMTimeMakeWithSeconds(time, preferredTimescale: Int32(NSEC_PER_SEC))
-        
-        self.player.seek(to: cmTime)
+
+        if let tolerance = self.seekTolerance {
+            self.player.seek(to: cmTime, toleranceBefore: tolerance, toleranceAfter: tolerance)
+        } else {
+            self.player.seek(to: cmTime)
+        }
         
         self.time = time
     }
     
-    public func play() {
+    open func play() {
         self.player.play()
     }
     
-    public func pause() {
+    open func pause() {
         self.player.pause()
     }
     
     // MARK: Lifecycle
     
-    public override init() {
+    public init(seekTolerance: TimeInterval? = nil) {
+        self.regularPlayerView = RegularPlayerView(frame: .zero)
+        self.seekTolerance = seekTolerance.map {
+            CMTimeMakeWithSeconds($0, preferredTimescale: Int32(NSEC_PER_SEC))
+        }
+
         super.init()
         
         self.addPlayerObservers()
-        
         self.regularPlayerView.configureForPlayer(player: self.player)
-        
         self.setupAirplay()
     }
     

    // MARK: Private Properties
    
    fileprivate var player = AVPlayer()
    
    // MARK: Public API
    

        }
    }
    
    open var view: UIView {
        return self.regularPlayerView
    }
    
    // MARK: Player
