diff --git a/examples/lj.py b/examples/lj.py
index 4085490949ce1c26ae9bd087617f1538ff7ec4a1..8f2414dedec1858460c1737182f2925a087d667b 100644
--- a/examples/lj.py
+++ b/examples/lj.py
@@ -36,6 +36,12 @@ rho = 0.8442
 temp = 1.44
 
 psim = pairs.simulation("lj", [pairs.point_mass()], timesteps=200, double_prec=True)
+
+if target == 'gpu':
+    psim.target(pairs.target_gpu())
+else:
+    psim.target(pairs.target_cpu())
+
 psim.add_position('position')
 psim.add_property('mass', pairs.real(), 1.0)
 psim.add_property('linear_velocity', pairs.vector())
@@ -52,10 +58,4 @@ psim.compute_thermo(100)
 psim.compute(initial_integrate, symbols={'dt': dt}, pre_step=True, skip_first=True)
 psim.compute(lj, cutoff_radius)
 psim.compute(final_integrate, symbols={'dt': dt}, skip_first=True)
-
-if target == 'gpu':
-    psim.target(pairs.target_gpu())
-else:
-    psim.target(pairs.target_cpu())
-
 psim.generate()
diff --git a/src/pairs/sim/comm.py b/src/pairs/sim/comm.py
index e6fc4f661c906f9db55af61aa2885a841ebcce69..242c887531792b81385762f94a0421563aaa7ce1 100644
--- a/src/pairs/sim/comm.py
+++ b/src/pairs/sim/comm.py
@@ -20,8 +20,8 @@ class Comm:
         self.sim = sim
         self.dom_part = dom_part
         self.nsend_all      = sim.add_var('nsend_all', Types.Int32)
-        self.send_capacity  = sim.add_var('send_capacity', Types.Int32, 200000)
-        self.recv_capacity  = sim.add_var('recv_capacity', Types.Int32, 200000)
+        self.send_capacity  = sim.add_var('send_capacity', Types.Int32, 80000)
+        self.recv_capacity  = sim.add_var('recv_capacity', Types.Int32, 80000)
         self.elem_capacity  = sim.add_var('elem_capacity', Types.Int32, 40)
         self.neigh_capacity = sim.add_var('neigh_capacity', Types.Int32, 10)
         self.nsend          = sim.add_array('nsend', [self.neigh_capacity], Types.Int32)
diff --git a/src/pairs/sim/neighbor_lists.py b/src/pairs/sim/neighbor_lists.py
index 2b10a66bd81e05c8fb6d224dfe5766085025d83a..5662522b2c2d178319b6aea8f0ad12d92d0960f9 100644
--- a/src/pairs/sim/neighbor_lists.py
+++ b/src/pairs/sim/neighbor_lists.py
@@ -1,6 +1,7 @@
 from pairs.ir.assign import Assign
 from pairs.ir.block import pairs_device_block
 from pairs.ir.branches import Branch, Filter
+from pairs.ir.layouts import Layouts
 from pairs.ir.loops import ParticleFor
 from pairs.ir.types import Types
 from pairs.ir.utils import Print
@@ -9,10 +10,11 @@ from pairs.sim.lowerable import Lowerable
 
 
 class NeighborLists:
-    def __init__(self, cell_lists):
-        self.sim = cell_lists.sim
+    def __init__(self, sim, cell_lists):
+        neighbor_layout = Layouts.SoA if sim._target.is_gpu() else Layouts.AoS
+        self.sim = sim
         self.cell_lists = cell_lists
-        self.neighborlists = self.sim.add_array('neighborlists', [self.sim.particle_capacity, self.sim.neighbor_capacity], Types.Int32)
+        self.neighborlists = self.sim.add_array('neighborlists', [self.sim.particle_capacity, self.sim.neighbor_capacity], Types.Int32, neighbor_layout)
         self.numneighs = self.sim.add_array('numneighs', [self.sim.particle_capacity, self.sim.max_shapes()], Types.Int32)