> We can just return this directly. No need to allocate space on the heap for it.

Wat? surely this needs to be returned as a pointer to a struct on the heap? As we are passing it around all over the place.