What about this way?
Move the process of new negotiator into `registry.New`.
This is because negotiator is always needed and only needed by registry.
All the other functions should not care about the negotiator.