Changed logging abstraction to use Delegate