private void writeEdges(GameState state, char[][] buffer, int xOffset, 
			int yOffset) {
		
		final Edge newest = state.getNewestEdge();
		
		for(Edge edge : state.edges(ItemType.EXISTING)) {
			final int x, y;
			switch(edge.getCanDirection()) {
				case RIGHT:
					x = xOffset + edge.getCanX() + 1 + 
						(edge.getCanX() * nodeSpacingHorizontal);
					y = yOffset + edge.getCanY() + 
						(edge.getCanY() * nodeSpacingVertical);
					
					for(int i = 0; i < nodeSpacingHorizontal; ++i)
						put(buffer, x + i, y, edge.equals(newest) ? 
								boardHorizontalEdgeNewestChar : 
								boardHorizontalEdgeChar);
					break;
				case BELOW:
					x = xOffset + edge.getCanX() + 
						(edge.getCanX() * nodeSpacingHorizontal);
					y = yOffset + edge.getCanY() + 1 + 
							(edge.getCanY() * nodeSpacingVertical);
					
					for(int i = 0; i < nodeSpacingVertical; ++i)
						put(buffer, x, y + i, edge.equals(newest) ? 
								boardVerticalEdgeNewestChar : 
								boardVerticalEdgeChar);
					break;
			}
		}
	}