Goal: Turn `CreateDataShape` into a generic that accepts both data and error types and returns the matching object shape.