lots of work on the kernel