block based methods as an alternative to the delegate