added basic shared_ptr support