         }
     }
 
+    /// Return the av player layer for consumption by
+    /// things such as Picture in Picture
+    open func playerLayer() -> AVPlayerLayer? {
+        return self._playerView.playerLayer
+    }
+    
     // MARK: - private instance vars
 
     internal var _asset: AVAsset? {

        }
    }

    /// Determines if the video should autoplay when a url is set
    ///
    /// - Parameter bool: defaults to true
    open var autoplay: Bool = true

    /// For setting up with AVAsset instead of URL
    /// Note: Resets URL (cannot set both)
    open var asset: AVAsset? {
        get { return _asset }
        set { _ = newValue.map { setupAsset($0) } }
    }

    /// Mutes audio playback when true.
    open var muted: Bool {
        get {
            return self._avplayer.isMuted
        }
        set {
            self._avplayer.isMuted = newValue
        }
    }

    /// Volume for the player, ranging from 0.0 to 1.0 on a linear scale.
    open var volume: Float {
        get {
            return self._avplayer.volume
        }
        set {
            self._avplayer.volume = newValue
        }
    }

    /// Specifies how the video is displayed within a player layer’s bounds.
    /// The default value is `AVLayerVideoGravityResizeAspect`. See `PlayerFillMode`.
    open var fillMode: PlayerFillMode {

        }
    }
    
}

// MARK: - action funcs

extension Player {

    /// Begins playback of the media from the beginning.
    open func playFromBeginning() {
