replaced makeweak with setweak with different extensible callback signature (3.21.12+)