reorganizing code
adding kernels