Modify protocol to use a pub/sub model
Handle nickname in use error