Change to protocol agnostic