improved back-end for reduction
supports partial reduction