diff --git a/geomagio/Controller.py b/geomagio/Controller.py
index c79cdd162ef67b0f1e0dc4dd8fbeed7968c5c243..d9b7375039fec7587a24c19b6122132fae9220e3 100644
--- a/geomagio/Controller.py
+++ b/geomagio/Controller.py
@@ -26,7 +26,7 @@ from . import vbf
 from . import xml
 from . import covjson
 from . import netcdf
-from geomagio.imagcdf.ImagCDFFactory import ImagCDFFactory
+from . import imagcdf
 
 
 class Controller(object):
@@ -574,7 +574,7 @@ def get_input_factory(args):
             input_factory = covjson.CovJSONFactory(**input_factory_args)
         elif input_type == "imagcdf":
             input_factory_args["output"] = args.output
-            input_factory = ImagCDFFactory(**input_factory_args)
+            input_factory = imagcdf.ImagCDFFactory(**input_factory_args)
         # wrap stream
         if input_stream is not None:
             input_factory = StreamTimeseriesFactory(
@@ -667,7 +667,7 @@ def get_output_factory(args):
         elif output_type == "xml":
             output_factory = xml.XMLFactory(**output_factory_args)
         elif output_type == "imagcdf":
-            output_factory = ImagCDFFactory(**output_factory_args)
+            output_factory = imagcdf.ImagCDFFactory(**output_factory_args)
         # wrap stream
         if output_stream is not None:
             output_factory = StreamTimeseriesFactory(
diff --git a/geomagio/imagcdf/ImagCDFFactory.py b/geomagio/imagcdf/ImagCDFFactory.py
index 643238bcba6a96681660cad686f88c87548c6eb0..72a0dc19b945c05201b9bce93c107897c6c68411 100644
--- a/geomagio/imagcdf/ImagCDFFactory.py
+++ b/geomagio/imagcdf/ImagCDFFactory.py
@@ -54,7 +54,7 @@ class ImagCDFFactory(TimeseriesFactory):
         urlTemplate="file://{obs}_{dt}_{t}.cdf",
         inputFile: Optional[str] = None,
         output: Optional[str] = "iaga2002",
-        urlInterval: int= -1
+        urlInterval: int = -1,
     ):
         """
         Initialize the ImagCDFFactory with default parameters.
@@ -74,7 +74,7 @@ class ImagCDFFactory(TimeseriesFactory):
             type=type,
             interval=interval,
             urlTemplate=urlTemplate,
-            urlInterval=urlInterval
+            urlInterval=urlInterval,
         )
         self.inputFile = inputFile
         self.output = (
@@ -846,7 +846,7 @@ class ImagCDFFactory(TimeseriesFactory):
             base_path = self.urlTemplate[7:]
             if not base_path or base_path == "{obs}_{dt}_{t}.cdf":
                 base_path = os.getcwd()  # Default to current working directory
-                return os.path.join(base_path,filename)
+                return os.path.join(base_path, filename)
             return os.path.join(self.urlTemplate, filename)
 
         # Unsupported URL scheme
diff --git a/geomagio/imagcdf/__init__.py b/geomagio/imagcdf/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e7611ab4cdd29eb6c6eea8426606b749ed3675ec
--- /dev/null
+++ b/geomagio/imagcdf/__init__.py
@@ -0,0 +1,10 @@
+"""IO Module for ImagCDF Format
+"""
+
+from __future__ import absolute_import
+
+from .ImagCDFFactory import ImagCDFFactory
+from .IMCDFPublication import IMCDFPublicationLevel
+
+
+__all__ = ["ImagCDFFactory", "IMCDFPublicationLevel"]