 		public function contains(value:*):Boolean
 		{
 			// validate private variables before trying to use them
-			if (_dirty)
-				validate();
+			if (_triggerCount != _callbacks.triggerCounter)
+			{
+				_min = min.value;
+				_max = max.value;
+				_minInclusive = minInclusive.value;
+				_maxInclusive = maxInclusive.value;
+				_triggerCount = _callbacks.triggerCounter;
+			}
 			// use private variables for speed
 			return (_minInclusive ? value >= _min : value > _min)
 				&& (_maxInclusive ? value <= _max : value < _max);

		}

		/**
		 * min, max
		 * These values define the bounds of the continuous range contained in this classifier.
		 */
		public const min:LinkableNumber = newLinkableChild(this, LinkableNumber, invalidate);
		public const max:LinkableNumber = newLinkableChild(this, LinkableNumber, invalidate);

		/**
		 * minInclusive
		 * This value is the result of contains(value) when value == min.
		 */
		public const minInclusive:LinkableBoolean = newLinkableChild(this, LinkableBoolean, invalidate);
		/**
		 * maxInclusive
		 * This value is the result of contains(value) when value == max.
		 */
		public const maxInclusive:LinkableBoolean = newLinkableChild(this, LinkableBoolean, invalidate);

		// called when session state changes
		private function invalidate():void
		{
			_dirty = true;
		}
		// true when private variables need to be validated
		private var _dirty:Boolean = true;
		// validates private variables
		private function validate():void
		{
			_min = min.value;
			_max = max.value;
			_minInclusive = minInclusive.value;
			_maxInclusive = maxInclusive.value;
			_dirty = false;
		}
		// private variables for holding session state, used for speed
		private var _min:Number, _max:Number;
		private var _minInclusive:Boolean, _maxInclusive:Boolean;



package weave.data.BinClassifiers
{
	import weave.api.core.ICallbackCollection;
	import weave.api.data.IBinClassifier;
	import weave.api.data.IPrimitiveColumn;
	import weave.api.getCallbackCollection;
	import weave.api.newLinkableChild;
	import weave.core.LinkableBoolean;
	import weave.core.LinkableNumber;
	import weave.data.AttributeColumns.StringColumn;
	
	/**
	 * A classifier that uses min,max values for containment tests.
	 * 
	 * @author adufilie
