use weak instead of assign here.