Ok, I'm working on fixing this. There's a problem I see with it though. The caller passes in the send method, but the InputMirror handles the data. This means that the InputMirror needs knowledge of what the send methods are anyway, and now that we're splitting it into two places it makes it harder to maintain since both objects need to know how the send methods work.