protocolless example