for kernel