more docs; implement weak_ref