added kernels that use shared memory