Don't we need to fix up the ID, like is done in `read()` ??