this reads a bit too generic: should we rename `Message` to `Persisted`?