public static TreeNode buildTree() {
		TreeBuilder builder = new TreeBuilder("Animations");
		for (Building bld : Building.getAll()) {
			if (!bld.hasAnimation()) continue;
			String name = bld.getName();
			if (name.startsWith("comp_"))
				builder.add(bld, false, "Buildings", "comp", name);
			else if (name.startsWith("deco_"))
				builder.add(bld, false, "Buildings", "deco", name);
			else if (name.startsWith("map_"))
				builder.add(bld, false, "Buildings", "map", name);
			else if (name.startsWith("terrain_"))
				builder.add(bld, false, "Buildings", "terrain", name);
			else {
				String menu = bld.getBuildMenu();
				if (menu == null) menu = "Other";
				builder.add(bld, true, "Buildings", menu, name, bld.getTag());
			}
		}
		for (Unit unit : Unit.getAll()) {
			builder.add(unit, true, unit.getSide() + " Units",
					unit.getName(), unit.getTag());
		}
		for (String name : Timeline.getAllNames()) {
			builder.add(name, false, "all", name.substring(0,1), name);
		}
		return builder.getTree();
	}