             }
         }
     }
-    public var playbackFreezesAtEnd: Bool!
-    public var playbackState: PlaybackState!
-    public var bufferingState: BufferingState!
+    public var playbackFreezesAtEnd: Bool! = false
+    public var playbackState: PlaybackState! = .Stopped {
+        didSet {
+            self.delegate?.playerPlaybackStateDidChange(self)
+        }
+    }
+    public var bufferingState: BufferingState! = .Unknown {
+        didSet {
+            self.delegate?.playerBufferingStateDidChange(self)
+        }
+    }
 
     public var maximumDuration: NSTimeInterval! {
         get {

                    let status = self.asset.statusOfValueForKey(key, error:&error)
                    if status == .Failed {
                        self.playbackState = .Failed
                        self.delegate?.playerPlaybackStateDidChange(self)
                        return
                    }
                }

                if self.asset.playable.boolValue == false {
                    self.playbackState = .Failed
                    self.delegate?.playerPlaybackStateDidChange(self)
                    return
                }


        }

        self.bufferingState = .Unknown
//        self.delegate?.playerBufferingStateDidChange(self)

        self.asset = asset
        if let _ = self.asset {
