Refactored so it creates one thread (one instance of ClientHandler) per connection.