diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py
index d6261dca9111501e479b9acb1160c60932915456..51ada586a620b070d052c99c8c205f5cccf60f65 100644
--- a/src/pairs/code_gen/cgen.py
+++ b/src/pairs/code_gen/cgen.py
@@ -326,7 +326,7 @@ class CGen:
 
         if isinstance(ast_node, Deref):
             var = self.generate_expression(ast_node.var)
-            return f"*{var}"
+            return f"(*{var})"
 
         if isinstance(ast_node, Iter):
             assert mem is False, "Iterator is not lvalue!"
diff --git a/src/pairs/sim/pbc.py b/src/pairs/sim/pbc.py
index 08a5d9609628c905bf7b32400cfb032f0b91857b..f91dd136a9a0fc7f33b24f7b79cfdf7113d60e81 100644
--- a/src/pairs/sim/pbc.py
+++ b/src/pairs/sim/pbc.py
@@ -89,12 +89,12 @@ class SetupPBC(Lowerable):
         sim.check_resize(pbc_capacity, npbc)
 
         npbc.set(0)
-        for i in For(sim, 0, nlocal + npbc):
-            pos = positions[i]
-            last_id = nlocal + npbc
-            last_pos = positions[last_id]
+        for d in range(0, ndims):
+            for i in For(sim, 0, nlocal + npbc):
+                pos = positions[i]
+                last_id = nlocal + npbc
+                last_pos = positions[last_id]
 
-            for d in range(0, ndims):
                 grid_length = grid.length(d)
                 # TODO: VecFilter?
                 for _ in Filter(sim, pos[d] < grid.min(d) + cutneigh):
diff --git a/src/pairs/sim/simulation.py b/src/pairs/sim/simulation.py
index 8e30895eb1a9d06c3f938502baec03fb08acbd9b..8ef7b4fb45a5c2f6caf5d340a73876afd1b13b81 100644
--- a/src/pairs/sim/simulation.py
+++ b/src/pairs/sim/simulation.py
@@ -71,7 +71,15 @@ class Simulation:
         self.module_list.append(module)
 
     def modules(self):
-        return self.module_list
+        sorted_mods = []
+        main_mod = None
+        for m in self.module_list:
+            if m.name != 'main':
+                sorted_mods.append(m)
+            else:
+                main_mod = m
+
+        return sorted_mods + [main_mod]
 
     def ndims(self):
         return self.dims