oops, protocol type