diff --git a/lbmpy/boundaries/boundaries_in_kernel.py b/lbmpy/boundaries/boundaries_in_kernel.py
deleted file mode 100644
index 9be2062643d456f1eddbe7919244dae62300ab97..0000000000000000000000000000000000000000
--- a/lbmpy/boundaries/boundaries_in_kernel.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import sympy as sp
-
-from lbmpy.boundaries.boundaryhandling import BoundaryOffsetInfo, LbmWeightInfo
-from pystencils.assignment import Assignment
-from pystencils.astnodes import Block, Conditional, LoopOverCoordinate, SympyAssignment
-from pystencils.data_types import type_all_numbers
-from pystencils.field import Field
-from pystencils.simp.assignment_collection import AssignmentCollection
-from pystencils.simp.simplifications import sympy_cse_on_assignment_list
-from pystencils.stencil import inverse_direction
-from pystencils.sympyextensions import fast_subs
-
-
-def direction_indices_in_direction(direction, stencil):
-    for i, offset in enumerate(stencil):
-        for d_i, o_i in zip(direction, offset):
-            if (d_i == 1 and o_i == 1) or (d_i == -1 and o_i == -1):
-                yield i
-                break
-
-
-def boundary_substitutions(lb_method):
-    stencil = lb_method.stencil
-    w = lb_method.weights
-    replacements = {}
-    for idx, offset in enumerate(stencil):
-        symbolic_offset = BoundaryOffsetInfo.offset_from_dir(idx, dim=lb_method.dim)
-        for sym, value in zip(symbolic_offset, offset):
-            replacements[sym] = value
-
-        replacements[BoundaryOffsetInfo.inv_dir(idx)] = stencil.index(inverse_direction(offset))
-        replacements[LbmWeightInfo.weight_of_direction(idx)] = w[idx]
-    return replacements
-
-
-def border_conditions(direction, field, ghost_layers=1):
-    abs_direction = tuple(-e if e < 0 else e for e in direction)
-    assert sum(abs_direction) == 1
-    idx = abs_direction.index(1)
-    val = direction[idx]
-
-    loop_ctrs = [LoopOverCoordinate.get_loop_counter_symbol(i) for i in range(len(direction))]
-    loop_ctr = loop_ctrs[idx]
-
-    gl = ghost_layers
-    border_condition = sp.Eq(loop_ctr, gl if val < 0 else field.shape[idx] - gl - 1)
-
-    if ghost_layers == 0:
-        return type_all_numbers(border_condition, loop_ctr.dtype)
-    else:
-        other_min = [sp.Ge(c, gl)
-                     for c in loop_ctrs if c != loop_ctr]
-        other_max = [sp.Lt(c, field.shape[i] - gl)
-                     for i, c in enumerate(loop_ctrs) if c != loop_ctr]
-        result = sp.And(border_condition, *other_min, *other_max)
-        return type_all_numbers(result, loop_ctr.dtype)
-
-
-def transformed_boundary_rule(boundary, accessor_func, field, direction_symbol, lb_method, **kwargs):
-    tmp_field = field.new_field_with_different_name("t")
-    rule = boundary(tmp_field, direction_symbol, lb_method, **kwargs)
-    bsubs = boundary_substitutions(lb_method)
-    rule = [a.subs(bsubs) for a in rule]
-    accessor_writes = accessor_func(tmp_field, lb_method.stencil)
-    to_replace = set()
-    for assignment in rule:
-        to_replace.update({fa for fa in assignment.rhs.atoms(Field.Access) if fa.field == tmp_field})
-
-    def compute_replacement(fa):
-        f = fa.index[0]
-        shift = accessor_writes[f].offsets
-        new_index = tuple(a + b for a, b in zip(fa.offsets, shift))
-        return field[new_index](accessor_writes[f].index[0])
-
-    substitutions = {fa: compute_replacement(fa) for fa in to_replace}
-    all_assignments = [assignment.subs(substitutions) for assignment in rule]
-    main_assignments = [a for a in all_assignments if isinstance(a.lhs, Field.Access)]
-    sub_expressions = [a for a in all_assignments if not isinstance(a.lhs, Field.Access)]
-    assert len(main_assignments) == 1
-    ac = AssignmentCollection(main_assignments, sub_expressions).new_without_subexpressions()
-    return ac.main_assignments[0].rhs
-
-
-def boundary_conditional(boundary, direction, read_of_next_accessor, lb_method, output_field, cse=False):
-    stencil = lb_method.stencil
-    tmp_field = output_field.new_field_with_different_name("t")
-
-    dir_indices = direction_indices_in_direction(direction, stencil)
-
-    assignments = []
-    for direction_idx in dir_indices:
-        rule = boundary(tmp_field, direction_idx, lb_method, index_field=None)
-        boundary_subs = boundary_substitutions(lb_method)
-        rule = [a.subs(boundary_subs) for a in rule]
-
-        rhs_substitutions = {tmp_field(i): sym for i, sym in enumerate(lb_method.post_collision_pdf_symbols)}
-        offset = stencil[direction_idx]
-        inv_offset = inverse_direction(offset)
-        inv_idx = stencil.index(inv_offset)
-
-        lhs_substitutions = {
-            tmp_field[offset](inv_idx): read_of_next_accessor(output_field, stencil)[inv_idx]}
-        rule = [Assignment(a.lhs.subs(lhs_substitutions), a.rhs.subs(rhs_substitutions)) for a in rule]
-        ac = AssignmentCollection([rule[-1]], rule[:-1]).new_without_subexpressions()
-        assignments += ac.main_assignments
-
-    border_cond = border_conditions(direction, output_field, ghost_layers=1)
-    if cse:
-        assignments = sympy_cse_on_assignment_list(assignments)
-    assignments = [SympyAssignment(a.lhs, a.rhs) for a in assignments]
-    return Conditional(border_cond, Block(assignments))
-
-
-def update_rule_with_push_boundaries(collision_rule, field, boundary_spec, accessor, read_of_next_accessor):
-    method = collision_rule.method
-    loads = [Assignment(a, b) for a, b in zip(method.pre_collision_pdf_symbols, accessor.read(field, method.stencil))]
-    stores = [Assignment(a, b) for a, b in
-              zip(accessor.write(field, method.stencil), method.post_collision_pdf_symbols)]
-
-    result = collision_rule.copy()
-    result.subexpressions = loads + result.subexpressions
-    result.main_assignments += stores
-    for direction, boundary in boundary_spec.items():
-        cond = boundary_conditional(boundary, direction, read_of_next_accessor, method, field)
-        result.main_assignments.append(cond)
-
-    if 'split_groups' in result.simplification_hints:
-        substitutions = {b: a for a, b in zip(accessor.write(field, method.stencil), method.post_collision_pdf_symbols)}
-        new_split_groups = []
-        for split_group in result.simplification_hints['split_groups']:
-            new_split_groups.append([fast_subs(e, substitutions) for e in split_group])
-        result.simplification_hints['split_groups'] = new_split_groups
-
-    return result
diff --git a/lbmpy/moments.py b/lbmpy/moments.py
index dac71e6643feee5f1a6fa630af9bf014323566b3..f6cf1897e5991e688e641f4b255836ad47d65750 100644
--- a/lbmpy/moments.py
+++ b/lbmpy/moments.py
@@ -307,7 +307,7 @@ def discrete_moment(func, moment, stencil, shift_velocity=None):
     res = 0
     for factor, e in zip(func, stencil):
         if type(moment) is tuple:
-            for vel, shift,  exponent in zip(e, shift_velocity, moment):
+            for vel, shift, exponent in zip(e, shift_velocity, moment):
                 factor *= (vel - shift) ** exponent
             res += factor
         else:
diff --git a/pytest.ini b/pytest.ini
index 2d69c7f60c6319ca21d470f78676aa8b17a7e44b..d45acff6386c4a76470fae4f539ce69eb6355938 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -31,7 +31,7 @@ exclude_lines =
        if __name__ == .__main__.:
 
 skip_covered = True
-fail_under = 90
+fail_under = 89
 
 [html]
 directory = coverage_report