 		public function set selectedIndex(value:int):void
 		{
 			_selectedIndex = value;
-			_selectedString = (value == -1) ? null : (value < _dataProvider.length) ? _dataProvider[value] : null;
+			_selectedItem = (value == -1) ? null : (value < _dataProvider.length) ? _dataProvider[value] : null;
 			dispatchEvent(new Event("selectedIndexChanged"));			
 		}
-		private var _selectedString:String;
+		
+		private var _selectedItem:Object;
 		
 		public function get selectedItem():Object
 		{
-			return _selectedString;
+			return _selectedItem;
 		}
 		public function set selectedItem(value:Object):void
 		{
-			selectedString = String(value);	
-		}
-		public function get selectedString():String
-		{
-			return _selectedString;
-		}
-		public function set selectedString(value:String):void
-		{
-			_selectedString = value;
+			_selectedItem = value;	
 			var n:int = _dataProvider.length;
 			for (var i:int = 0; i < n; i++)
 			{

				}
			}
			dispatchEvent(new Event("selectedItemChanged"));			
			dispatchEvent(new Event("selectedIndexChanged"));			
		}
	}

{
	import org.apache.flex.core.ISelectionModel;
	import org.apache.flex.core.IStrand;
	import org.apache.flex.events.Event;
	import org.apache.flex.events.EventDispatcher;
			
	public class ArraySelectionModel extends EventDispatcher implements ISelectionModel
