add KeyValueAcceptor interface so we can inject mock objects to replace all output channels in the tests