add WeakMap