add DRWeakHandler.
just copy code.
add rest code