diff --git a/lbmpy/boundaries/boundaryconditions.py b/lbmpy/boundaries/boundaryconditions.py
index a987af6a793f16d93293ae8c12a75eb411f365a0..e887170970bc83b64f85a7cec730baeb37b2e265 100644
--- a/lbmpy/boundaries/boundaryconditions.py
+++ b/lbmpy/boundaries/boundaryconditions.py
@@ -604,6 +604,8 @@ class FixedDensity(LbBoundary):
 # end class FixedDensity
 
 class NoslipEquilibriumReconstruction(LbBoundary):
+    single_link = True
+    inner_or_boundary = False
 
     def __init__(self, normal_direction, velocity=None, name=None):
         if isinstance(normal_direction, str):
@@ -636,25 +638,18 @@ class NoslipEquilibriumReconstruction(LbBoundary):
         return [NeighbourOffsetArrays(lb_method.stencil)]
 
     def __call__(self, f_out, f_in, dir_symbol, inv_dir, lb_method, index_field):
-        neighbor_offset = NeighbourOffsetArrays.neighbour_offset(dir_symbol, lb_method.stencil)
-        tangential_offset = tuple(offset + normal for offset, normal in zip(neighbor_offset, self.normal_direction))
-
         cqc = lb_method.conserved_quantity_computation
         density_symbol = sp.Symbol("rho")
-        pdf_field_accesses = [f_out[tangential_offset](i) for i in range(len(lb_method.stencil))]
+        pdf_field_accesses = [f_out[self.normal_direction](i) for i in range(len(lb_method.stencil))]
         density_equations = cqc.output_equations_from_pdfs(pdf_field_accesses, {'density': density_symbol})
 
         substitutions = {u_symbolic: u for u_symbolic, u in zip(cqc.velocity_symbols, self.velocity)}
-
-        conditions = list()
         equilibrium_terms = lb_method.get_equilibrium_terms().subs(substitutions)
-        for i, term in enumerate(equilibrium_terms[1:]):
-            conditions.append((term, sp.Eq(dir_symbol, sp.Integer(i + 1))))
-
-        expr = sp.Piecewise(*conditions, (equilibrium_terms[0], True))
 
         subexpressions = density_equations.all_assignments
-        main_assignments = [Assignment(f_in(inv_dir[dir_symbol]), expr)]
+        main_assignments = list()
+        for i in range(len(lb_method.stencil)):
+            main_assignments.append(Assignment(f_out(i), equilibrium_terms[i]))
 
         ac = AssignmentCollection(main_assignments, subexpressions=subexpressions)
         ac = ac.new_without_unused_subexpressions()