cache protocol on the stack to reduce options hash lookups