     // MARK: - Playing Videos
     
     func playNextVideo() {
+        let notificationCenter = NSNotificationCenter.defaultCenter()
+        
+        // remove old entries
+        notificationCenter.removeObserver(self);
         
         let player = AVPlayer()
         // play another video
         let oldPlayer = self.player
         self.player = player
-        self.playerView.player = self.player
+        self.playerLayer.player = self.player
+        
+        if self.preview {
+            AerialView.previewPlayer = player
+        }
+        
+        debugLog("Setting player for all player layers in \(AerialView.sharedViews)");
+        for view in AerialView.sharedViews {
+            view.playerLayer.player = player
+        }
         
         if (oldPlayer == AerialView.previewPlayer) {
-            AerialView.previewPlayer = self.player
-        }
-        
+            AerialView.previewView?.playerLayer.player = self.player
+        }
         
         let randomVideo = ManifestLoader.instance.randomVideo();
         

        layer.delegate = self;
        layer.needsDisplayOnBoundsChange = true;
        layer.frame = self.bounds
        
        playerLayer = AVPlayerLayer(player: player);
        
        playerLayer.frame = layer.bounds;
        layer.addSublayer(playerLayer);
    }
    func setupPlayerView(withPlayer player:AVPlayer) {
        playerView = AVPlayerView()
        playerView.frame = self.bounds
        playerView.autoresizingMask = [.ViewHeightSizable, .ViewWidthSizable]
        playerView.controlsStyle = .None
        playerView.player = player;
        if #available(OSX 10.10, *) {
            playerView.videoGravity = AVLayerVideoGravityResizeAspectFill
        };
        self.addSubview(playerView);
    }
    func setup() {
        
        var localPlayer:AVPlayer?

                }
            }
        }
        else {
            AerialView.previewView = self;
        }
        
        if AerialView.sharingPlayers {
            AerialView.sharedViews.append(self);
        }
        
        if localPlayer == nil {
            if AerialView.sharingPlayers {
