Add some logging. Unfinished. Left choice of log provider up to caller (they can provide a 'logger' object during init)
Add the rest of the logging