 
 		for (x, y, state) in m {
 			let neighbours = livingNeighboursForCell(x: x, y: y)
+			
 			if state == .alive {
 				if 2...3 !~= neighbours {
 					m[x, y] = .dead

	}

	let neighboursDelta = [(1, 0), (0, 1), (-1, 0), (0, -1), (1, 1), (-1, 1), (-1, -1), (1, -1)]
	private func neighboursForCell(x: Int, y: Int) -> [Cell] {
		let neightbours = neighboursDelta
			// TODO: This can be precalculated
			.map { (dx, dy) -> (Int, Int) in
				return (dx + x, dy + y)


				return false
			}
			.map { (nx, ny) -> CellState in
				return m[nx, ny]
		}

		return neighbours
	}

	private func livingNeighboursForCell(x: Int, y: Int) -> Int {
		return neighboursForCell(x: x, y: y)
			.filter{ $0 == .alive }
			.count
	}
}
