start using shared pointers !