added some function kernels