added bivariate functions