added WeakHashMap and WeakReference