why you declare `delegate` twice?