public void setSolution(Solution solution) {
		this.setBackground(new Color(240, 240, 240)); // #f0f0f0
		
		//remove any elements that may be on the panel from a previous solutions
		this.removeAll();
		
		//vertical box layout with one column and any number of rows
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		JPanel summary = null;
		//if there's a summary to show
		if(solution.getSummary() != null) {
			summary = new JPanel();
			JLabel summaryLabel = new JLabel(solution.getSummary());
			summaryLabel.setFont(font);
			summary.add(summaryLabel);
		}
		
		//add the summary at the top if it exists and belongs at the top
		if(summary != null && !solution.isSummaryLast()) this.add(summary);
		
		//add the original equation/algebra at the top
		JPanel original = new JPanel();
		JLabel originalLabel = new JLabel(new ImageIcon(GraphicalRenderer.render(solution.getOriginalAlgebraicExpression())));
		original.add(originalLabel);
		this.add(original);
		
		//add each step
		for(int i = 0; i < solution.length(); i++) {
			this.add(new StepPanel(solution.get(i), font));
		}
		
		//add the summary at the bottom if it exists and belongs at the bottom
		if(summary != null && solution.isSummaryLast()) this.add(summary);
		
		//revalidate and paint
		this.revalidate();
		this.repaint();
	}