setDelegate is actually a method of the *trait* DelegateBlockFetchTracker, which is why it can't be set in a constructor.  But maybe that trait is overkill ... I agree that it really ought to be in the constructor