     
     var asset: AVURLAsset? { get set }
     
-    var assetURL: URL? {get }
-
+    var assetURL: URL? { get }
+
+    var isPrepared: Bool { get }
+    
     var playbackPosition: TimeInterval { get set }
     
-    var playbackProgress: Float {get set}
+    var playbackProgress: Float { get set }
 
     ///Playback duration adjusted for playbackRate
     var playbackDuration: TimeInterval { get }

    }
    
    @discardableResult public func play() -> Bool {
        MusicPlayer.player.play()
        
        // NOTE: Attempting to call play() immediately before or after

    
    public weak var delegate: AudioPlayerDelegate?

    public var mediaItem: MPMediaItem? = nil
    
    public var asset: AVURLAsset? {
        get {
