oops, protocols