protocol errors, function decoupling