Add ExpressionKernel, base remaining kernels on that