Version 12 released with new components: Null Move Pruning, and Late Move Reductions ! For now, I kept the code very simple: - a Null Move Search is done if depth > 1 and the last null move is at least (ply * 2) distant from current node, to avoid consecutive null moves to abort search too quickly. Depth is reduced by 3, and a recheck with no null move is done with same reduction if depth was greater than 9 (zugzwang checking). - a Late Move Reduction is applied when at least 3 legal moves have been analysed with no fail-high encountered. All subsequent nodes are analysed 1 ply less deeper.