first pass towards a logging api