extracts thread pool and socket wrapper
refactors, starts implementing tests
works on tests, adds tests, more refactoring
more refactoring
Server creates either an http connection or websocket one