I don't think this needs a WeakMap