change to make_shared, add ycm