diff --git a/CyXTraX/__init__.py b/CyXTraX/__init__.py
index 604e872795dde098fda58faa76811b31382388e1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/CyXTraX/__init__.py
+++ b/CyXTraX/__init__.py
@@ -1,20 +0,0 @@
-from .artist_bridge import CylindricalProjection, load_mesh
-from .mesh_object import MeshObject
-from .generate_atlas import record_atlas
-from .load_maps import load_atlas
-
-import importlib.resources
-import numpy as np
-
-
-with importlib.resources.path('CyXTraX.data', 'olaf_6.stl') as file_path:
-    olaf_stl = file_path
-    olaf_mesh = MeshObject(olaf_stl, 
-                           position_mm=np.array([1, 2, 3]),
-                           orientation_quat=np.array([0., 0., 0., 1.]))
-    
-with importlib.resources.path('CyXTraX.data', 'scones.stl') as file_path:
-    scones_stl = file_path
-    scones_mesh = MeshObject(scones_stl, 
-                             position_mm=np.array([0, 0, 0]),
-                             orientation_quat=np.array([0., 0., 0., 1.]))
\ No newline at end of file
diff --git a/CyXTraX/common/__init__.py b/CyXTraX/common/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..0bcec689802c3b6b143aec6f110b5b8d3c8ee4ee
--- /dev/null
+++ b/CyXTraX/common/__init__.py
@@ -0,0 +1 @@
+from .mesh_object import MeshObject
\ No newline at end of file
diff --git a/CyXTraX/mesh_object.py b/CyXTraX/common/mesh_object.py
similarity index 100%
rename from CyXTraX/mesh_object.py
rename to CyXTraX/common/mesh_object.py
diff --git a/CyXTraX/data/__init__.py b/CyXTraX/data/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1d77652b80039a747b78e562d39d0e61c56a704
--- /dev/null
+++ b/CyXTraX/data/__init__.py
@@ -0,0 +1,16 @@
+import importlib.resources
+import numpy as np
+from ..common import MeshObject
+
+
+with importlib.resources.path('CyXTraX.data', 'olaf_6.stl') as file_path:
+    olaf_stl = file_path
+    olaf_mesh = MeshObject(olaf_stl, 
+                           position_mm=np.array([1, 2, 3]),
+                           orientation_quat=np.array([0., 0., 0., 1.]))
+    
+with importlib.resources.path('CyXTraX.data', 'scones.stl') as file_path:
+    scones_stl = file_path
+    scones_mesh = MeshObject(scones_stl, 
+                             position_mm=np.array([0, 0, 0]),
+                             orientation_quat=np.array([0., 0., 0., 1.]))
\ No newline at end of file
diff --git a/CyXTraX/io/__init__.py b/CyXTraX/io/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ba211c6e3a0ef115cdd387bd8d8b4d82e7766b8
--- /dev/null
+++ b/CyXTraX/io/__init__.py
@@ -0,0 +1,2 @@
+from .generate_atlas import record_atlas
+from .load_maps import load_atlas
\ No newline at end of file
diff --git a/CyXTraX/generate_atlas.py b/CyXTraX/io/generate_atlas.py
similarity index 94%
rename from CyXTraX/generate_atlas.py
rename to CyXTraX/io/generate_atlas.py
index 5c08155dcc9c5988192a83713792fa9432bafc4d..239f985a92950e45d3dd87807b0c57fa96015e59 100644
--- a/CyXTraX/generate_atlas.py
+++ b/CyXTraX/io/generate_atlas.py
@@ -1,7 +1,7 @@
 import numpy as np
 import h5py
-from .artist_bridge import CylindricalProjection
-from .mesh_object import MeshObject
+from CyXTraX.simulation.artist_bridge import CylindricalProjection
+from CyXTraX.common.mesh_object import MeshObject
 from pathlib import Path
 import json
 
diff --git a/CyXTraX/load_maps.py b/CyXTraX/io/load_maps.py
similarity index 93%
rename from CyXTraX/load_maps.py
rename to CyXTraX/io/load_maps.py
index 8d5105cd9bcc92ad2825756fb3aa53a3b0573e9c..b2cddbdde95256875e82eee8b963267b8117c029 100644
--- a/CyXTraX/load_maps.py
+++ b/CyXTraX/io/load_maps.py
@@ -1,6 +1,6 @@
 import h5py
 from jax import numpy as jnp
-from .mesh_object import MeshObject
+from ..common.mesh_object import MeshObject
 import json
 from pathlib import Path
 
diff --git a/CyXTraX/simulation/__init__.py b/CyXTraX/simulation/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..c36a20e59544eb827c5d5010196a0b8e66ca6443
--- /dev/null
+++ b/CyXTraX/simulation/__init__.py
@@ -0,0 +1 @@
+from .artist_bridge import CylindricalProjection, load_mesh
\ No newline at end of file
diff --git a/CyXTraX/artist_bridge.py b/CyXTraX/simulation/artist_bridge.py
similarity index 98%
rename from CyXTraX/artist_bridge.py
rename to CyXTraX/simulation/artist_bridge.py
index 5bf5ff3910619682770c060c29003ef762fdaab6..e9243b63665d85ecb7989783d8f8af6f870d16a3 100644
--- a/CyXTraX/artist_bridge.py
+++ b/CyXTraX/simulation/artist_bridge.py
@@ -5,7 +5,7 @@ import os
 from scipy.spatial.transform import Rotation
 import importlib.resources
 
-from .mesh_object import MeshObject
+from CyXTraX.common.mesh_object import MeshObject
 
 # !!!!!!!!!!!!!!!!!!!
 # Read carefully
diff --git a/scripts/01_aRTist_bridge.py b/scripts/01_aRTist_bridge.py
index db602c54ba40b4782e351649f214a6b02068dd23..2263754da64e47305ba9845317799d48425f2497 100644
--- a/scripts/01_aRTist_bridge.py
+++ b/scripts/01_aRTist_bridge.py
@@ -1,4 +1,7 @@
-from CyXTraX import CylindricalProjection, load_mesh, scones_mesh, MeshObject
+from CyXTraX.simulation import CylindricalProjection, load_mesh
+from CyXTraX.data import scones_mesh
+from CyXTraX.common import MeshObject
+
 import numpy as np
 from matplotlib import pyplot as plt
 
@@ -12,7 +15,7 @@ def main():
     print(f'STL Path: {scones_mesh.object_path}')
 
     # Obect are loaded in a dataclass: MeshObject.
-    print(f'Olaf is a MeshObject: {isinstance(scones_mesh, MeshObject)}')
+    print(f'Mesh is a MeshObject: {isinstance(scones_mesh, MeshObject)}')
     scones_mesh.position_mm = np.array([0, 0, 0])
     scones_mesh.orientation_quat = np.array([0., -0., 0., 0.1])
     
diff --git a/scripts/02_generate_atlas.py b/scripts/02_generate_atlas.py
index f7bd52fde4eb7eb28ff88242208e69ef1b627002..39eff9da2c39deaa088f45e2cdc4dd1d30c18fe9 100644
--- a/scripts/02_generate_atlas.py
+++ b/scripts/02_generate_atlas.py
@@ -1,4 +1,6 @@
-from CyXTraX import CylindricalProjection, olaf_mesh, record_atlas, load_mesh
+from CyXTraX.io import record_atlas
+from CyXTraX.simulation import CylindricalProjection, load_mesh
+from CyXTraX.data import olaf_mesh
 from pathlib import Path
 
 
diff --git a/scripts/03_load_atlas.py b/scripts/03_load_atlas.py
index 2a0b349407a86600295c8f4849b76bdbd79ace9b..b574781233ee98e68074bcf5ddfaff408e38753c 100644
--- a/scripts/03_load_atlas.py
+++ b/scripts/03_load_atlas.py
@@ -1,4 +1,4 @@
-from CyXTraX import CylindricalProjection, load_atlas
+from CyXTraX.io import load_atlas
 from pathlib import Path
 
 
diff --git a/scripts/04_mapping.py b/scripts/04_mapping.py
index 9c512c4a07b8add9966aa2c16319c55a6a233d9d..f63d84e8cce06da83bfc7bc73ebc1b282738cb56 100644
--- a/scripts/04_mapping.py
+++ b/scripts/04_mapping.py
@@ -1,4 +1,5 @@
-from CyXTraX import CylindricalProjection, load_atlas, load_mesh
+from CyXTraX.simulation import CylindricalProjection, load_mesh
+from CyXTraX.io import load_atlas
 from CyXTraX.mapping import map_geometry_2_projection, map_source_2_cylinder
 from pathlib import Path
 from jax import numpy as jnp
@@ -59,7 +60,6 @@ def main():
         print(values_calc[i], mapped_values[i])
         map_ = maps[:, :, i]
         value = map_[int(angles_calc[0, i]), int(angles_calc[1, i])]
-        print(value)
 
     fig = plt.figure()
     ax1 = fig.add_subplot(111)