made delegate weak