can we go protocol agnostic here?