split into seperate kernels