diff --git a/src/pystencils/backend/kernelcreation/__init__.py b/src/pystencils/backend/kernelcreation/__init__.py
index 978616769d4c534d05ea4a66cca654e3db06d134..1cbddab4f9dea32a30b95f211db935a542840bbe 100644
--- a/src/pystencils/backend/kernelcreation/__init__.py
+++ b/src/pystencils/backend/kernelcreation/__init__.py
@@ -10,6 +10,8 @@ from .iteration_space import (
     create_sparse_iteration_space,
 )
 
+from .cpu_optimization import optimize_cpu
+
 __all__ = [
     "KernelCreationContext",
     "KernelAnalysis",
@@ -19,4 +21,5 @@ __all__ = [
     "SparseIterationSpace",
     "create_full_iteration_space",
     "create_sparse_iteration_space",
+    "optimize_cpu",
 ]
diff --git a/src/pystencils/backend/kernelcreation/cpu_optimization.py b/src/pystencils/backend/kernelcreation/cpu_optimization.py
new file mode 100644
index 0000000000000000000000000000000000000000..47db578232578ef9fbf48cb8b34fde8e549ab00e
--- /dev/null
+++ b/src/pystencils/backend/kernelcreation/cpu_optimization.py
@@ -0,0 +1,28 @@
+from __future__ import annotations
+
+from .context import KernelCreationContext
+from ..platforms import GenericCpu
+from ..ast.structural import PsBlock
+
+from ...config import CpuOptimConfig
+
+
+def optimize_cpu(
+    ctx: KernelCreationContext,
+    platform: GenericCpu,
+    kernel_ast: PsBlock,
+    cfg: CpuOptimConfig,
+):
+    """Carry out CPU-specific optimizations according to the given configuration."""
+
+    if cfg.loop_blocking:
+        raise NotImplementedError("Loop blocking not implemented yet.")
+
+    if cfg.vectorize is not False:
+        raise NotImplementedError("Vectorization not implemented yet")
+
+    if cfg.openmp:
+        raise NotImplementedError("OpenMP not implemented yet")
+
+    if cfg.use_cacheline_zeroing:
+        raise NotImplementedError("CL-zeroing not implemented yet")
diff --git a/src/pystencils/backend/kernelcreation/freeze.py b/src/pystencils/backend/kernelcreation/freeze.py
index 0d1e34639d5dac3d33b211e652f7bb85c127ec32..2e571111f41c3ec1826df90fb88e96be735d6c4a 100644
--- a/src/pystencils/backend/kernelcreation/freeze.py
+++ b/src/pystencils/backend/kernelcreation/freeze.py
@@ -48,22 +48,6 @@ class FreezeExpressions:
 
     TODO: Document the full set of supported SymPy features, with restrictions and caveats
     TODO: Properly document the SymPy extensions provided by pystencils
-
-    TODO: This is a (possibly incomplete) list of SymPy language features that still need to be implemented:
-
-     - Augmented Assignments
-     - AddressOf
-     - Relations (sp.Relational)
-     - pystencils.sympyextensions.integer_functions
-     - pystencils.sympyextensions.bit_masks
-     - GPU fast approximations (pystencils.fast_approximation)
-     - ConditionalFieldAccess
-     - sp.Piecewise
-     - sp.floor, sp.ceiling
-     - sp.log, sp.atan2, sp.sinh, sp.cosh. sp.atan
-     - sp.Min, sp.Max: multi-argument versions
-     - Modulus (sp.Mod)
-
     """
 
     def __init__(self, ctx: KernelCreationContext):
diff --git a/src/pystencils/backend/platforms/generic_cpu.py b/src/pystencils/backend/platforms/generic_cpu.py
index 8c53a9f166f44118f942c795b5b21bf9f2464112..08e87ed82e014434e8febbb2de912f09ab8b6ed1 100644
--- a/src/pystencils/backend/platforms/generic_cpu.py
+++ b/src/pystencils/backend/platforms/generic_cpu.py
@@ -19,7 +19,7 @@ from ..ast.expressions import (
     PsLookup,
 )
 from ...types import PsVectorType, PsCustomType
-from ..transformations.vector_intrinsics import IntrinsicOps
+from ..transformations.select_intrinsics import IntrinsicOps
 
 
 class GenericCpu(Platform):
diff --git a/src/pystencils/backend/platforms/x86.py b/src/pystencils/backend/platforms/x86.py
index 7b42c48903c94b6d6971b22cd15beba377c73e25..fe5e1c76db8e106bb99324599b79e0e8d43c4da8 100644
--- a/src/pystencils/backend/platforms/x86.py
+++ b/src/pystencils/backend/platforms/x86.py
@@ -9,7 +9,7 @@ from ..ast.expressions import (
     PsAddressOf,
     PsSubscript,
 )
-from ..transformations.vector_intrinsics import IntrinsicOps
+from ..transformations.select_intrinsics import IntrinsicOps
 from ...types import PsCustomType, PsVectorType
 from ..constants import PsConstant
 
diff --git a/src/pystencils/backend/transformations/__init__.py b/src/pystencils/backend/transformations/__init__.py
index fc261f17485ba76a8b955168548d07df5790ba4c..b4c0e8bbd32fe738b29828ac16a4bdd1401e4fae 100644
--- a/src/pystencils/backend/transformations/__init__.py
+++ b/src/pystencils/backend/transformations/__init__.py
@@ -1,6 +1,6 @@
 from .eliminate_constants import EliminateConstants
 from .erase_anonymous_structs import EraseAnonymousStructTypes
-from .vector_intrinsics import MaterializeVectorIntrinsics
+from .select_intrinsics import MaterializeVectorIntrinsics
 
 __all__ = [
     "EliminateConstants",
diff --git a/src/pystencils/backend/transformations/vector_intrinsics.py b/src/pystencils/backend/transformations/select_intrinsics.py
similarity index 100%
rename from src/pystencils/backend/transformations/vector_intrinsics.py
rename to src/pystencils/backend/transformations/select_intrinsics.py
diff --git a/src/pystencils/kernelcreation.py b/src/pystencils/kernelcreation.py
index b2fe4b664fe391b98bd222147c2bf92e274735a3..79cf92f8bf882749ade1afd0c8c686cdfb21d5a0 100644
--- a/src/pystencils/kernelcreation.py
+++ b/src/pystencils/kernelcreation.py
@@ -99,10 +99,10 @@ def create_kernel(
     erase_anons = EraseAnonymousStructTypes(ctx)
     kernel_ast = cast(PsBlock, erase_anons(kernel_ast))
 
-    #   7. Apply optimizations
-    #     - Vectorization
-    #     - OpenMP
-    #     - Loop Splitting, Tiling, Blocking
+    #   Target-Specific optimizations
+    if config.target.is_cpu() and config.cpu_optim is not None:
+        from .backend.kernelcreation import optimize_cpu
+        optimize_cpu(ctx, platform, kernel_ast, config.cpu_optim)
 
     assert config.jit is not None
     return create_kernel_function(