change the way we require single-use constructors
* exporting an instantiated function is different from exporting
the constructor itself. the latter will give you a new instance
every time you require the file
Call socket.leave prior to emitting client confirmation