added factor_product, _bivar_factor_product