Pass delegates in rather than instantiating them in constructors