Attached is my attempt to make a WeakMetadata module (a weak hash table where only the key is weak and the value is used to store metadata about the key). It is derived from Remi Vanicat's Hweak module, which is itself derived from the weak set in stdlib. Unfortunately it relies on the following being safe. I have no idea if this is safe or not. Array.create 0 (Obj.magic ()) Also it doesn't clean up the extra data (metadata) very aggressively. It basically waits for it to get overwritten when further bindings are added to a bucket. So if the metadata is very large it would be worth adding some sort of "compact" method. Rich. -- Richard Jones Red Hat