OpenCAGE Data. This is primarily introduced to break a circular dependency, but it might be useful later.
A basis object for holding global data structures. In fact this one holds nothing - everything is in Oc_Data. But we need this one because Ada sucks (think about Ada's inability to handle circular dependencies). NEVER EVER TRY TO USE SOMETHING ELSE DERIVED FROM DATA INSTEAD OF Oc_Data. This simply won't work, we always cast to Oc_Data when we need to do something. This isn't nice but we didn't come up with another sollution for this.