finished shared_ptr implem, still need to check if the specialization for hash works for nq::shared also