 		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);


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

	{
		public function NumberClassifier(min:* = NaN, max:* = NaN, minInclusive:Boolean = true, maxInclusive:Boolean = true)
		{
			super();
			_callbacks = getCallbackCollection(this);
			this.min.value = min;
			this.max.value = max;
			this.minInclusive.value = minInclusive;
