One of the advantages of having an abstracted input class is that you can maintain control of event listeners by providing on and off functions. This keeps things from getting double bound which causes problems down the line. 
--------------------------------------
Also, remember to loosely couple your objects. Right, now, you pass in a connection and send data using the connection's send method. This works, but it makes the code more fragile. A better way would be to allow the caller to pass in whatever send method they choose and then fire that on a change event.