port two-product reactions from Java
update