Display better errors and conform more to the protocol