Use shared pointer EVERYWHERE