I feel like you're using `data` objects as a container only to avoid name collision on `type` property. Would it make sense to just rename `type` to something else to avoid this ?