currently components like enums, exceptions and structs are in their own module - we need to refactor them so they are tightly coupled to the API submodule that they are used in.
We need to re-think where/how we are going to implement shared components.
This is important as we are going to move Query Library implementation out of the pack - it's worth refactoring how we're using shared components as we do so