private void sortStepInit() {
		childMap = calculateChildMap();
		depths = calculateNodeDepths();
		
		for (String s : depths.keySet()) {
			int depth = depths.get(s);
			maxDepth = Math.max(maxDepth, depth);
			
			if (radiusByImportance) {
				Visode o = find(s);
				if (o instanceof OdeNode) {
					OdeNode n = ((OdeNode)o);
					if (childMap.containsKey(s)) {
						n.r += 2*Math.log(totalChildCount(childMap, s))/Math.log(1.2);
					}
				}
			}
		}
		
		layers = new LinkedList<List<String>>();
		for (int i = maxDepth; i >= 0; i--) {
			List<String> list = new LinkedList<String>();
			
			for (String s : depths.keySet()) {
				if (depths.get(s) == i)
					list.add(s);
			}
			
			if (!list.isEmpty())
				layers.add(list);
		}
	}