 		public function get geometryAdded() : Signal
 		{
 			return _geometryAdded;
+		}
+		
+		public function get symbolAdded() : Signal
+		{
+			return _symbolAdded;
+		}
+		
+		public function setSymbol(name : String, node : ISceneNode) : void
+		{
+			if (_symbolList.indexOf(node) == -1)
+			{
+				++_numSymbols;
+				_symbolList.push(node);
+				_symbols[name] = node;
+				_symbolAdded.execute(this, name, node);
+			}
 		}
 		
 		public function setGeometry(name : String, geometry : Geometry) : void

		private var _numGeometries 	: uint 						= 0;
		private var _numMaterials	: uint 						= 0;
		private var _numTextures	: uint 						= 0;
		
		private var _geometryList	: Vector.<Geometry> 		= new Vector.<Geometry>();
		private var _materialList	: Vector.<Material> 		= new Vector.<Material>();
		private var _textureList	: Vector.<TextureResource> 	= new Vector.<TextureResource>();
		
		private var _geometries		: Object;
		private var _textures		: Object;
		private var _materials		: Object;
		private var _layers			: Vector.<String>;
		private var _nameToLayer	: Object;
		
		private var _geometryAdded	: Signal;
		private var _textureAdded	: Signal;
		private var _materialAdded	: Signal;
		private var _layerAdded		: Signal;

			return _numMaterials;
		}
		
		public function getSymbolAt(index : uint) : ISceneNode
		{
			return _symbolList[index];
		}
		
		public function getMaterialAt(index : uint): Material
		{
			return _materialList[index];
