protocol class refactoring: marshall/demarshall