Tidy up of the implementation by introducing two classes to hold the detail of the message to be logged, i.e. BBXMessageDetails and BBXSourceLocation.