diff --git a/src/walberla/codegen/__init__.py b/src/walberla/codegen/__init__.py
index 50097ef8b19500c16e44a5e25622d4fbaf6889d9..bf850906eba200d7ce81976a9a3319acd8d45a3f 100644
--- a/src/walberla/codegen/__init__.py
+++ b/src/walberla/codegen/__init__.py
@@ -1,5 +1,4 @@
 from .api import real_t, Vector3, GhostLayerFieldPtr, glfield, IBlockPtr
-from .postprocessing import CaptureToClass
 from .sweep import Sweep
 from .build_config import WalberlaBuildConfig
 
@@ -9,7 +8,6 @@ __all__ = [
     "GhostLayerFieldPtr",
     "glfield",
     "IBlockPtr",
-    "CaptureToClass",
     "Sweep",
     "WalberlaBuildConfig",
 ]
diff --git a/src/walberla/codegen/postprocessing.py b/src/walberla/codegen/postprocessing.py
deleted file mode 100644
index d4a911f1318cca77802af0d321a0e01d89b8c8ab..0000000000000000000000000000000000000000
--- a/src/walberla/codegen/postprocessing.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from typing import Iterable
-import sympy as sp
-
-from pystencils.types import deconstify
-from pystencilssfg.ir.postprocessing import SfgDeferredNode, PostProcessingContext
-from pystencilssfg.ir import (
-    SfgCallTreeNode,
-    SfgStatements,
-    SfgVisibility,
-    SfgVisibilityBlock,
-    SfgMemberVariable,
-    SfgSequence,
-    SfgConstructor,
-)
-from pystencilssfg.lang import AugExpr, SfgVar
-from pystencilssfg.exceptions import SfgException
-
-
-class CaptureToClass(SfgDeferredNode):
-    def __init__(
-        self, ignore: Iterable[str | SfgVar | AugExpr | sp.Symbol] = ()
-    ) -> None:
-        self._ignore = set()
-        for ig in ignore:
-            if isinstance(ig, AugExpr):
-                self._ignore |= ig.depends
-            elif isinstance(ig, sp.Symbol):
-                self._ignore.add(ig.name)
-            else:
-                self._ignore.add(ig)
-
-    def expand(self, ppc: PostProcessingContext) -> SfgCallTreeNode:
-        cls = ppc.enclosing_class
-        if cls is None:
-            raise SfgException("Cannot capture variables to class in a free function")
-
-        statements: list[SfgStatements] = []
-        captured: list[SfgVar] = []
-        members_block = SfgVisibilityBlock(SfgVisibility.PRIVATE)
-
-        for var in ppc.live_variables:
-            if not (var in self._ignore or var.name in self._ignore):
-                member = SfgMemberVariable(f"{var}_", deconstify(var.dtype))
-                members_block.append_member(member)
-                captured.append(var)
-                statements.append(
-                    SfgStatements(f"{var.dtype.c_string()} {var.name} {{ {member} }};", [var], [])
-                )
-
-        cls.append_visibility_block(members_block)
-
-        constructor_block = SfgVisibilityBlock(SfgVisibility.PUBLIC)
-        constructor_block.append_member(
-            SfgConstructor(captured, [f"{var}_ {{ {var} }}" for var in captured])
-        )
-        cls.append_visibility_block(constructor_block)
-
-        return SfgSequence(statements)