add kernel functions