This version works entirely with smart pointers inside the kernel. However, some small problems exist in windows.