Refactored out some ctors that could throw and some inconsistencies around export params
Moved internals to subnamespaces and internalized things that should not be directly consumed