 		return intersections
 	}
 	
-	func unionRect(with frames: [PanelExposeFrame]) -> CGRect {
-		
-		var rect = frames.first!.exposeFrame
+	func unionRect(with frames: [PanelExposeFrame]) -> CGRect? {
+		
+		guard var rect = frames.first?.exposeFrame else {
+			return nil
+		}
 		
 		for r in frames {
 			

			
			frames.append(last)
			
			let unionRect = self.unionRect(with: frames)
			let g = CGPoint(x: unionRect.midX, y: unionRect.midY)
			
			let deltaX = max(1.0, last.panel.view.center.x - g.x)

		
		let exposePanels = panels.filter { (p) -> Bool in
			return p.isInExpose
		}
		
		guard !exposePanels.isEmpty else {
			return
		}
		
		for panel in exposePanels {
