added basic convolution function