added `when finished` and `when failed` negotiation definitions;
`NegotiationFinishedListener` added;