 	open static var detailedLog					= true
 
 	/// Set this to true to use the systems `MPNowPlayingInfoCenter` (control center and lock screen). The default value is `true`.
-	open var useNowPlayingInfoCenter				= true
+	open var useNowPlayingInfoCenter			= true
+
+	/// Decides whether the audio player should wait until enough data is loaded to minimize stalling or if it should play as soon as the buffer is not empty. The default is `BufferStrategy.minimizeStalling`.
+	/// - Note: Is only supported in iOS 10+
+	open var bufferStrategy						= BufferStrategy.minimizeStalling {
+		didSet {
+			if #available(iOS 10.0, *) {
+				self.player?.automaticallyWaitsToMinimizeStalling = self.bufferStrategy == .minimizeStalling
+			}
+		}
+	}
+
+	/// Overrides the `preferredForwardBufferDuration` of `AVPlayerItem`. The default is `0` which let AVPlayer decide about the duration. 
+	/// - Note: Is only supported in iOS 10+
+	open var preferredForwardBufferDuration		= TimeInterval(0) {
+		didSet {
+			if #available(iOS 10.0, *) {
+				self.player?.currentItem?.preferredForwardBufferDuration = self.preferredForwardBufferDuration
+			}
+		}
+	}
 
 	// Set this to true to receive control events
 	open var useRemoteControlEvents				= true {

	fileprivate var playbackPositionChangeTimer				: Timer?
	fileprivate var stopPlaybackTimeChangeTimer				= false

	fileprivate var addedPlayerStateObserver				= false

	// MARK: - Initializaiton

	fileprivate func setupAudioSession() {

        self.forward()
    }

	// MARK: - Playback time change callback

	open func addPlaybackTimeChangeCallback(_ sender: AnyObject, callback: @escaping (_ track: AudioTrack) -> Void) {
