added convolution routine