Split out BasePublisher class