we now pass around and serialize kernel objects, instead of always reconstructing kernels by name