private void makeTable() {
		int tableSize = (int) Math.pow(2, Expression.getVariableCount());
		compactTable.clear();
		String compactTableString = new String(Expression.getCompactExpression());
		List<String> expressionRow = new ArrayList<>();
		List<String> emptyRow = new ArrayList<>();

		for (int i = 0; i < compactTableString.length(); i++) {
			// break the expression into component parts
			expressionRow.add(Character.toString(compactTableString.charAt(i)));
			// create a list of equal size to expression row of spaces. used to initalize the result rows so i can set elements
			// of the row without any shifting
			emptyRow.add(" ");
		}

		compactTable.add(expressionRow);

		for (int i = 0; i < tableSize; i++) {
			// need to make a new unque instance or all "empty rows" are all the same and change together whenever one is edited
			List<String> emptyRowUnique = new ArrayList<>(emptyRow);
			compactTable.add(emptyRowUnique);
		}

		for (int i = 0; i < tableSize; i++) {
			calcRow(i, compactTableString);
		}
	}