protocol doesnt depend on a generator