use weak instead of assign modifier