public void update() {
		sort();
		
		for (Point point : points)
			addNeighbors(point);

		for (int i = 0; i < points.size(); i++) {
			int neighbors = countAndRemove(points.get(i));

			if (neighbors < 2 || neighbors > 3)
				points.remove(i--);
		}

		while (nextGeneration.size() > 0) {
			Point point = nextGeneration.get(0);

			if (countAndRemove(nextGeneration.get(0)) == 3)
				points.add(point);
		}

		nextGeneration.clear();
	}