private void start() {
		if (script == null) {
			return;
		}

		script.tree.clear();

		script.status = "";

		List<Node<LogBankOrganiser>> nodes = new ArrayList<Node<LogBankOrganiser>>();

		nodes.add(new OpenBank(script));

		final IBank.BankTab[] bankTabs = IBank.BankTab.values();

		List<LinkedHashSet<Integer>> result = new ArrayList<LinkedHashSet<Integer>>();

		LinkedHashMap<Integer, List<String>> map = getTabContents(0);
		int i = 0;
		for (Map.Entry<Integer, List<String>> entry : map.entrySet()) {
			if (i > 0 && entry.getValue().isEmpty()) {
				continue;
			}
			result.add(script.itemCategoriser.getData(entry.getValue()));
			i++;
		}

		final MoveToTabTask moveToTabTask = new MoveToTabTask(script, result);
		nodes.add(moveToTabTask);
		nodes.add(new SortTabTask(script, moveToTabTask));

		for (Node<LogBankOrganiser> node : nodes) {
			script.tree.add(node);
		}

		startPressed = true;
		dispose();
	}