 
         public function get size():int
         {
-            return _inUse.length + _available.length;
+            return _inUseCount + _availableCount;
+        }
+
+        public function get available():int
+        {
+            return _availableCount;
+        }
+
+        public function get inUse():int
+        {
+            return _inUseCount;
         }
 
         public function destroy(destroyInstances:Boolean = true):void

        {
            if (value == null) throw new ArgumentError("value is null");

            if (_bounded && _inUse.length >= _maxSize)
            {
                _callbacks.push(value);
            }

            if (destroyInstances && destroyFunction != null)
            {
                var instance:Object;
                for (instance in _inUse)
                {
                    delete _inUse[instance];
                    destroyFunction(instance);
                }
                for (instance in _available)
                {
                    delete _available[instance];
                    destroyFunction(instance);
                }
            }

            _instantiateFunction = null;
