refacto protocol