#5 Separate AppKernel into AppKernel and WebAppKernel