Close to pass compiler, Damn it Template and shared_ptr
Finally pass compiling, know so little about template and boost