protocol without cases