 					setProbeKeys(lastActiveLayer, []);
 			}
 			// either not rolled over or nothing was probed
-			_lastProbedQKey = null;
-		}
-		
-		protected function setSelectionKeys(layerName:String, keys:Array, useMouseMode:Boolean = false):void
-		{	
+			_lastProbedQKeys = null;
+		}
+		
+		protected function setSelectionKeys(layerName:String, keys:Array):void
+		{
 			if (!Weave.properties.enableToolSelection.value || !enableSelection.value)
 				return;
 			
 			// set the probe filter to a new set of keys
 			var settings:LayerSettings = plotManager.getLayerSettings(layerName);
 			var keySet:KeySet = settings.selectionFilter.internalObject as KeySet;
-			if (keySet != null)
-			{	
-				if (useMouseMode && _mouseMode == InteractionController.SELECT_ADD)
-					keySet.addKeys(keys);
-				else if (useMouseMode && _mouseMode == InteractionController.SELECT_REMOVE)
-					keySet.removeKeys(keys);
-				else
-					keySet.replaceKeys(keys);
-			}
+			if (!keys)
+				keySet.clearKeys();
+			else if (_mouseMode == InteractionController.SELECT_ADD)
+				keySet.addKeys(keys);
+			else if (_mouseMode == InteractionController.SELECT_REMOVE)
+				keySet.removeKeys(keys);
+			else
+				keySet.replaceKeys(keys);
 		}
 		
 		protected function setProbeKeys(layerName:String, keys:Array):void

				if (!plotManager.layerShouldBeRendered(name) || !settings.selectable.value)
					continue;
				// skip this layer if it does not contain lastProbedQKey
				if (_lastProbedQKey && !plotter.filteredKeySet.containsKey(_lastProbedQKey))
					continue;
				
				// when using the selection layer, clear the probe
				setProbeKeys(name, []);

		/**
		 * This is the last IQualifiedKey (record identifier) that was probed.
		 */
		public function get lastProbedKey():IQualifiedKey { return _lastProbedQKeys ? _lastProbedQKeys[0] : null; }
		public function get lastProbedKeys():Array { return _lastProbedQKeys; }
		private var _lastProbedQKeys:Array = null;
		
		protected function handleProbe(allowCallLater:Boolean = true):void
		{
