split option protocol into two separate protocols.

s3 should logically be separate since it is just part of the handler.
beginning of previewer