change the whole protocol handling.