After a quick glance at the front and backend, nothing outside dt.c needs to know the definition of the struct.  Everywhere else I've looked just uses a pointer to it.  So, make it an opaque pointer and move this to dt.c, hiding it much more.