changes with shared pointer