standardize ID serialization

From #1285:
> What do we do with the `name` fields? Can we just fill in `id` across the board, or should we fill in the name where possible? (as I've kind of done here)
Maybe this is more appropriate as `IDFromString` now?