prepare for shared ptr