Smart way of using delegates (kudos to Jon Skeet)