Domain reduction is an essential tool for solving the constraint satisfaction problem (CSP). In the binary CSP, neighbourhood substitution consists in eliminating a value if there exists another value which can be substituted for it in each constraint. We show that the notion of neighbourhood substitution can be strengthened in two distinct ways without increasing time complexity. We also show the theoretical result that, unlike neighbourhood substitution, finding an optimal sequence of these new operations is NP-hard. ⋆ The author received funding from the French Investing for the Future PIA3 program under the Grant agreement ANR-19-PI3A-000, in the context of the ANITI project. if NSlist = ∅ then pop (p, u, v) from NSlist ; OK := (u, v ∈ D(xp)) ; else pop (p, u, q) from CNSlist ; OK := (u ∈ D(xp) ∧ Uncovered(p, u, q)) ; if OK then delete u fom D(xp) ; *** Update NbBlocks and propagate *** for all i such that {i, p} ∈ E : for all a, b ∈ D(xi) such that (b, u) ∈ Rip and (a, u) / ∈ Rip : ............(1) NbBlocks(i, b, a, p) := NbBlocks(i, b, a, p) −1 ; if NbBlocks(i, b, a, p) = 0 then BlockVars(i, b, a) := BlockVars(i, b, a) \{p} ; if BlockVars(i, b, a) becomes ∅ then *** NS *** add (i, b, a) to NSlist ; if BlockVars(i, b, a) becomes a singleton {j} then .