private void drawBoardSpace(BoardSpace boardSpace, Coordinate coordinate) {

        this.drawBoardSpaceBorder(coordinate, Color.RESET);

        final TerrainType terrainType = boardSpace.getTopTerrainType();
        final String terrainTypeIndicator;

        //TODO: Implement Visitor Design Pattern
        if (terrainType != null) {
            if (terrainType instanceof Palace) {
                terrainTypeIndicator = "P" + ((Palace) terrainType).getValue();
            } else if (terrainType instanceof Irrigation) {
                terrainTypeIndicator = "IR";
            } else if (terrainType instanceof RiceField) {
                terrainTypeIndicator = "RF";
            } else if (terrainType instanceof Village) {
                terrainTypeIndicator = "VI";
            } else {
                throw new IllegalStateException("Unknown Terrain Type " + terrainType.getClass().getName());
            }
            view.draw(coordinate.plus(2, 1), terrainTypeIndicator, Color.RESET);
        }

        if (boardSpace.getPlayerWithDeveloperOnSpace() != null) {
            view.draw(coordinate.plus(6, 1), "D" + boardSpace.getPlayerWithDeveloperOnSpace().getPlayerNumber(), Color.RESET);
        }
        if (boardSpace.getTopTerrainType() != null) {
            view.draw(coordinate.plus(3, 3), "H:" + boardSpace.getHeight(), Color.RESET);
        }
    }