 			stack.push(rootEntity);
 			while ( stack.length > 0 ) {
 				var entity:EntityProxy = stack.pop();
-				var childNodeNames:IList = entity.childrenDefinitionNames;
-				for each (var name:String in childNodeNames) {
+				var childDefinitionNames:IList = entity.childDefinitionNames;
+				for each (var name:String in childDefinitionNames) {
 					entity.showChildrenErrorsMap.put(name, true);
-					var children:IList = entity.getChildren(name);
-					for each (var child:NodeProxy in children) {
-						if(child is EntityProxy) {
-							stack.push(EntityProxy(child));
-						}
-					}
-				}
+				}
+				var childrenEntities:IList = entity.getChildEntities();
+				ArrayUtil.addAll(stack, childrenEntities.toArray());
 			}
 		}
 		

	import org.openforis.collect.remoting.service.UpdateRequestOperation;
	import org.openforis.collect.remoting.service.UpdateRequestOperation$Method;
	import org.openforis.collect.remoting.service.UpdateResponse;

    [Bindable]
    [RemoteClass(alias="org.openforis.collect.model.proxy.RecordProxy")]

		 * Traverse all the record's nodes and execute the argument function passing
		 * the visited node to it
		 * */
		public function traverse(funct:Function):void {
			var stack:Array = new Array();
			if ( rootEntity != null ) {
				rootEntity.traverse(funct);
			}
		}
		
