public ArrayList<Line2D> createLines() {
        Stack<LineParam> tempStack = new Stack<LineParam>();
        LinkedList<LineParam> tempList = new LinkedList<LineParam>();

        for (int x = 0; x < sectionIdBoard.length; x++) {

            Collection<LineParam> temp = x % 2 == 0 ? tempList : tempStack;
            temp.clear();

            for (int y = 0; y < sectionIdBoard[0].length; y++) {
                int section = sectionIdBoard[x][y];

                // look right:
                int rightX = x + 1;
                if (Utils.withinBounds(0, sectionIdBoard.length, rightX)) {
                    if (sectionIdBoard[rightX][y] != section) {
                        temp.add(new LineParam(section, new Point2D.Double(
                                x + .5, y)));
                    }
                }

                // look down:
                int downY = y + 1;
                if (Utils.withinBounds(0, sectionIdBoard.length, downY)) {
                    if (sectionIdBoard[x][downY] != section) {
                        temp.add(new LineParam(section, new Point2D.Double(x,
                                y + .5)));
                    }
                }
            }

            if (x % 2 == 1) {
                Utils.addAll(pointsForSection, (Stack<LineParam>) temp);
            } else {
                Utils.addAll(pointsForSection, (List<LineParam>) temp);
            }
        }

        return getLines();
    }