more protocol agnostic