transition to shared pointers