 			return position < _numChildren ? _children[position] : null;
 		}
 
-		public function getDescendantsByName(name 			: String,
-											 descendants 	: Vector.<ISceneNode> = null) : Vector.<ISceneNode>
-		{
-			descendants ||= new Vector.<ISceneNode>();
-			
-			var numChildren	: int 	= numChildren;
-			
-			for (var i : int = 0; i < numChildren; ++i)
-			{
-				var child : ISceneNode = _children[i];
-				var group : Group = child as Group;
-				
-				if (child.name == name)
-					descendants.push(child);
-
-				if (group)
-					group.getDescendantsByName(name, descendants);
-			}
-
-			return descendants;
-		}
-
 		public function getDescendantsByType(type 			: Class,
 											 descendants 	: Vector.<ISceneNode> = null) : Vector.<ISceneNode>
 		{


		protected function initialize() : void
		{
			_root = this;
			_name = AbstractSceneNode.getDefaultSceneName(this);
			_children = new <ISceneNode>[];

			transform.changed.add(transformChangedHandler);
			descendantAdded.add(descendantAddedHandler);
			descendantRemoved.add(descendantRemovedHandler);
		}

	{
		use namespace minko_scene;
		
		minko_scene var _children		: Vector.<ISceneNode>			= null;
		minko_scene var _numChildren	: uint							= 0;
		
		private var _numDescendants		: uint							= 0;
		
		private var _descendantAdded	: Signal						= new Signal('Group.descendantAdded');
		private var _descendantRemoved	: Signal						= new Signal('Group.descendantRemoved');

		/**
		 * The number of children.
