     }
 
     /// Specifies how the video is displayed within a player layer’s bounds.
-    /// The default value is `AVLayerVideoGravityResizeAspect`. See `FillMode` enum.
-    open var fillMode: String {
+    /// The default value is `AVLayerVideoGravityResizeAspect`. See `PlayerFillMode`.
+    open var fillMode: PlayerFillMode {
         get {
             return self._playerView.fillMode
         }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.playerLayer.backgroundColor = UIColor.black.cgColor
        self.playerLayer.fillMode = PlayerFillMode.resizeAspectFit.avFoundationType
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.playerLayer.backgroundColor = UIColor.black.cgColor
        self.playerLayer.fillMode = PlayerFillMode.resizeAspectFit.avFoundationType
    }

    deinit {

        self._asset?.loadValuesAsynchronously(forKeys: keys, completionHandler: { () -> Void in
            for key in keys {
                var error: NSError? = nil
                let status = self._asset?.statusOfValue(forKey: key, error: &error)
                if status == .failed {
                    self.playerDelegate?.player(self, didFailWithError: error)
                    self.playbackState = .failed
