     open var startTime: Double {
         get {
             return Double(startingFrame) / internalAudioFile.sampleRate
-            
         }
         set {
-            let wasPlaying = playing
-            
-            if newValue > Double(endingFrame) / internalAudioFile.sampleRate && endingFrame > 0 {
+            //let wasPlaying = playing
+            
+            // since setting startTime will fill the buffer again, we only want to do this if the
+            // data really needs to be updated
+            if newValue == internalStartTime {
+                //print("startTime is the same, so returning: \(newValue)")
+                return
+                
+            } else if newValue > Double(endingFrame) / internalAudioFile.sampleRate && endingFrame > 0 {
                 print("ERROR: AKAudioPlayer cannot set a startTime bigger than the endTime: \(Double(endingFrame) / internalAudioFile.sampleRate) seconds")
                 
             } else {
                 startingFrame = UInt32(newValue * internalAudioFile.sampleRate)
-                stop()
-            }
-            if wasPlaying {
-                play()
-            }
+                
+                Swift.print("AKAudioPlayer.startTime = \(newValue), startingFrame: \(startingFrame)")
+                
+                // now update the buffer
+                updatePCMBuffer()
+                //stop()
+                
+                // remember this value for ease of checking redundant calls later
+                internalStartTime = newValue
+            }
+            // RF: I don't think this is a good idea. There are many cases where you don't want it to restart on you without
+            //explicitly meaning to.
+            //            if wasPlaying {
+            //                play()
+            //            }
         }
     }
     

    fileprivate var lastCurrentTime: Double = 0
    fileprivate var paused = false
    fileprivate var playing = false
    
    // MARK: - Properties
    

        play( from: 0 )
    }
    
    /// Play the file back from a certain time, to an end time (if set). You can optionally set a scheduled time to play (in seconds).
    ///
    ///  - Parameters:
    ///    - time: Time into the file at which to start playing back
