reduce delegate