 				throw new Error('The property \'' + propertyName + '\' has no data provider.');
 			
 			return provider;
+		}
+		
+		public function getDataProviderAt(index : uint) : IDataProvider
+		{
+			if (index >= _providers.length)
+				throw new ArgumentError('Index out of bounds');
+			
+			return _providers[index];
 		}
 		
 		public function getProperty(propertyName : String) : Object

		
		private static const NO_KEY	: String		= "__no_key__";
		
		private var _bindings			: Dictionary		= new Dictionary(true);
		private var _values				: Object			= new Object();
		private var _properties			: Vector.<String>	= new <String>[];
		private var _propertyToProvider	: Object			= {};
		
		private var _propertyChanged	: Object			= {};
		
		public function get numProperties() : uint
		{
			return _properties.length;
		}
		
		public function propertyExists(propertyName : String) : Boolean

				addProperty(propertyName, dataProvider, key);
			}
			
			_providers.push(dataProvider);
			
			return this;
		}
		
