Refactoring Kernel impl : separate interface from impl.