added convolution operator