private List<LogicCell> next() {
        List<LogicCell> resultList = new ArrayList<>();
        for (LogicCell cell : currentStep) {
            cell.neigbour = 0;
            nextStep.put(cell, cell);
        }
        for (LogicCell c : currentStep) {
            addNeighbors(c);
        }
        for (LogicCell cell : currentStep) {
            if (cell.neigbour == 2 || cell.neigbour == 3) {
                resultList.add(cell);
            }
        }

        for (LogicCell c : nextStep.keySet()) {
            if (!resultList.contains(c)) {
                if (c.neigbour == 3) {
                    resultList.add(c);
                }
            }
        }
        nextStep.clear();
        currentStep = resultList;
        generation++;
        return resultList;
    }