constructing kernels