refactoring add share_ptr and const