weak_ptr added some minor tests to do but should be working as the others