diff --git a/benchmarks/bench_translations.py b/benchmarks/bench_translations.py
index ed97ed5456d00fcdc99daeb8e14841db8155b4dd..5e259f576ab8a0d0e59d016cf8d1b79601213c93 100644
--- a/benchmarks/bench_translations.py
+++ b/benchmarks/bench_translations.py
@@ -5,12 +5,12 @@ from pyopencl.tools import (  # noqa
 
 from sumpy.expansion.multipole import (
         VolumeTaylorMultipoleExpansion, H2DMultipoleExpansion,
-        LaplaceConformingVolumeTaylorMultipoleExpansion,
-        HelmholtzConformingVolumeTaylorMultipoleExpansion)
+        LinearPDEConformingVolumeTaylorMultipoleExpansion,
+        LinearPDEConformingVolumeTaylorMultipoleExpansion)
 from sumpy.expansion.local import (
         VolumeTaylorLocalExpansion, H2DLocalExpansion,
-        LaplaceConformingVolumeTaylorLocalExpansion,
-        HelmholtzConformingVolumeTaylorLocalExpansion)
+        LinearPDEConformingVolumeTaylorLocalExpansion,
+        LinearPDEConformingVolumeTaylorLocalExpansion)
 
 from sumpy.kernel import LaplaceKernel, HelmholtzKernel
 
@@ -91,8 +91,8 @@ class LaplaceVolumeTaylorTranslation(TranslationBenchmarkSuite):
 
 class LaplaceConformingVolumeTaylorTranslation(TranslationBenchmarkSuite):
     knl = LaplaceKernel
-    local_expn_class = LaplaceConformingVolumeTaylorLocalExpansion
-    mpole_expn_class = LaplaceConformingVolumeTaylorMultipoleExpansion
+    local_expn_class = LinearPDEConformingVolumeTaylorLocalExpansion
+    mpole_expn_class = LinearPDEConformingVolumeTaylorMultipoleExpansion
 
 
 class HelmholtzVolumeTaylorTranslation(TranslationBenchmarkSuite):
@@ -107,8 +107,8 @@ class HelmholtzVolumeTaylorTranslation(TranslationBenchmarkSuite):
 
 class HelmholtzConformingVolumeTaylorTranslation(TranslationBenchmarkSuite):
     knl = HelmholtzKernel
-    local_expn_class = HelmholtzConformingVolumeTaylorLocalExpansion
-    mpole_expn_class = HelmholtzConformingVolumeTaylorMultipoleExpansion
+    local_expn_class = LinearPDEConformingVolumeTaylorLocalExpansion
+    mpole_expn_class = LinearPDEConformingVolumeTaylorMultipoleExpansion
 
 
 class Helmholtz2DTranslation(TranslationBenchmarkSuite):
diff --git a/examples/sym-exp-complexity.py b/examples/sym-exp-complexity.py
index 49e20ead986b880b86529ee8d436843d10ef3cbb..600af3adb49e2e24a5c072531e67c677fefbf2d8 100644
--- a/examples/sym-exp-complexity.py
+++ b/examples/sym-exp-complexity.py
@@ -3,12 +3,12 @@ import pyopencl as cl
 import loopy as lp
 from sumpy.kernel import LaplaceKernel, HelmholtzKernel
 from sumpy.expansion.local import (
-        LaplaceConformingVolumeTaylorLocalExpansion,
-        HelmholtzConformingVolumeTaylorLocalExpansion,
+        LinearPDEConformingVolumeTaylorLocalExpansion,
+        LinearPDEConformingVolumeTaylorLocalExpansion,
         )
 from sumpy.expansion.multipole import (
-        LaplaceConformingVolumeTaylorMultipoleExpansion,
-        HelmholtzConformingVolumeTaylorMultipoleExpansion,
+        LinearPDEConformingVolumeTaylorMultipoleExpansion,
+        LinearPDEConformingVolumeTaylorMultipoleExpansion,
         )
 from sumpy.e2e import E2EFromCSR
 try:
@@ -22,13 +22,13 @@ def find_flops():
 
     if 0:
         knl = LaplaceKernel(2)
-        m_expn_cls = LaplaceConformingVolumeTaylorMultipoleExpansion
-        l_expn_cls = LaplaceConformingVolumeTaylorLocalExpansion
+        m_expn_cls = LinearPDEConformingVolumeTaylorMultipoleExpansion
+        l_expn_cls = LinearPDEConformingVolumeTaylorLocalExpansion
         flop_type = np.float64
     else:
         knl = HelmholtzKernel(2)
-        m_expn_cls = HelmholtzConformingVolumeTaylorMultipoleExpansion
-        l_expn_cls = HelmholtzConformingVolumeTaylorLocalExpansion
+        m_expn_cls = LinearPDEConformingVolumeTaylorMultipoleExpansion
+        l_expn_cls = LinearPDEConformingVolumeTaylorLocalExpansion
         flop_type = np.complex128
 
     orders = list(range(1, 11, 1))
diff --git a/test/test_fmm.py b/test/test_fmm.py
index 45e9bcd36a62c883402a27a716529e694b946da3..2afe4b3ee3842813e0b7a8b2b3cee8933ad2ac2e 100644
--- a/test/test_fmm.py
+++ b/test/test_fmm.py
@@ -31,13 +31,13 @@ from sumpy.kernel import LaplaceKernel, HelmholtzKernel, YukawaKernel
 from sumpy.expansion.multipole import (
     VolumeTaylorMultipoleExpansion,
     H2DMultipoleExpansion, Y2DMultipoleExpansion,
-    LaplaceConformingVolumeTaylorMultipoleExpansion,
-    HelmholtzConformingVolumeTaylorMultipoleExpansion)
+    LinearPDEConformingVolumeTaylorMultipoleExpansion,
+    LinearPDEConformingVolumeTaylorMultipoleExpansion)
 from sumpy.expansion.local import (
     VolumeTaylorLocalExpansion,
     H2DLocalExpansion, Y2DLocalExpansion,
-    LaplaceConformingVolumeTaylorLocalExpansion,
-    HelmholtzConformingVolumeTaylorLocalExpansion)
+    LinearPDEConformingVolumeTaylorLocalExpansion,
+    LinearPDEConformingVolumeTaylorLocalExpansion)
 
 import pytest
 
@@ -55,18 +55,18 @@ else:
 
 @pytest.mark.parametrize("knl, local_expn_class, mpole_expn_class", [
     (LaplaceKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorLocalExpansion,
-                       LaplaceConformingVolumeTaylorMultipoleExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion,
+                       LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (LaplaceKernel(3), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (LaplaceKernel(3), LaplaceConformingVolumeTaylorLocalExpansion,
-                       LaplaceConformingVolumeTaylorMultipoleExpansion),
+    (LaplaceKernel(3), LinearPDEConformingVolumeTaylorLocalExpansion,
+                       LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (HelmholtzKernel(2), HelmholtzConformingVolumeTaylorLocalExpansion,
-                         HelmholtzConformingVolumeTaylorMultipoleExpansion),
+    (HelmholtzKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion,
+                         LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), H2DLocalExpansion, H2DMultipoleExpansion),
     (HelmholtzKernel(3), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (HelmholtzKernel(3), HelmholtzConformingVolumeTaylorLocalExpansion,
-                         HelmholtzConformingVolumeTaylorMultipoleExpansion),
+    (HelmholtzKernel(3), LinearPDEConformingVolumeTaylorLocalExpansion,
+                         LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (YukawaKernel(2), Y2DLocalExpansion, Y2DMultipoleExpansion),
     ])
 def test_sumpy_fmm(ctx_factory, knl, local_expn_class, mpole_expn_class):
@@ -210,8 +210,8 @@ def test_unified_single_and_double(ctx_factory):
     queue = cl.CommandQueue(ctx)
 
     knl = LaplaceKernel(2)
-    local_expn_class = LaplaceConformingVolumeTaylorLocalExpansion
-    mpole_expn_class = LaplaceConformingVolumeTaylorMultipoleExpansion
+    local_expn_class = LinearPDEConformingVolumeTaylorLocalExpansion
+    mpole_expn_class = LinearPDEConformingVolumeTaylorMultipoleExpansion
 
     nsources = 1000
     ntargets = 300
diff --git a/test/test_kernels.py b/test/test_kernels.py
index 658816a9f922fc4875ecac1801224f529554f0e5..48e91c58a81a890ae101b8d632342fff661395ce 100644
--- a/test/test_kernels.py
+++ b/test/test_kernels.py
@@ -32,14 +32,14 @@ from pyopencl.tools import (  # noqa
 from sumpy.expansion.multipole import (
         VolumeTaylorMultipoleExpansion, H2DMultipoleExpansion,
         VolumeTaylorMultipoleExpansionBase,
-        LaplaceConformingVolumeTaylorMultipoleExpansion,
-        HelmholtzConformingVolumeTaylorMultipoleExpansion,
-        BiharmonicConformingVolumeTaylorMultipoleExpansion)
+        LinearPDEConformingVolumeTaylorMultipoleExpansion,
+        LinearPDEConformingVolumeTaylorMultipoleExpansion,
+        LinearPDEConformingVolumeTaylorMultipoleExpansion)
 from sumpy.expansion.local import (
         VolumeTaylorLocalExpansion, H2DLocalExpansion,
-        LaplaceConformingVolumeTaylorLocalExpansion,
-        HelmholtzConformingVolumeTaylorLocalExpansion,
-        BiharmonicConformingVolumeTaylorLocalExpansion)
+        LinearPDEConformingVolumeTaylorLocalExpansion,
+        LinearPDEConformingVolumeTaylorLocalExpansion,
+        LinearPDEConformingVolumeTaylorLocalExpansion)
 from sumpy.kernel import (LaplaceKernel, HelmholtzKernel, AxisTargetDerivative,
         DirectionalSourceDerivative, BiharmonicKernel, StokesletKernel)
 from pytools.convergence import PConvergenceVerifier
@@ -106,8 +106,8 @@ def test_p2p(ctx_factory, exclude_self):
 
 
 @pytest.mark.parametrize(("base_knl", "expn_class"), [
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorLocalExpansion),
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorMultipoleExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorMultipoleExpansion),
 ])
 def test_p2e_multiple(ctx_factory, base_knl, expn_class):
 
@@ -219,13 +219,13 @@ def test_p2e_multiple(ctx_factory, base_knl, expn_class):
 @pytest.mark.parametrize(("base_knl", "expn_class"), [
     (LaplaceKernel(2), VolumeTaylorLocalExpansion),
     (LaplaceKernel(2), VolumeTaylorMultipoleExpansion),
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorLocalExpansion),
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorMultipoleExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorMultipoleExpansion),
 
     (HelmholtzKernel(2), VolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), VolumeTaylorLocalExpansion),
-    (HelmholtzKernel(2), HelmholtzConformingVolumeTaylorLocalExpansion),
-    (HelmholtzKernel(2), HelmholtzConformingVolumeTaylorMultipoleExpansion),
+    (HelmholtzKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion),
+    (HelmholtzKernel(2), LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), H2DLocalExpansion),
     (HelmholtzKernel(2), H2DMultipoleExpansion),
 
@@ -237,9 +237,9 @@ def test_p2e_multiple(ctx_factory, base_knl, expn_class):
     (HelmholtzKernel(2, allow_evanescent=True), VolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2, allow_evanescent=True), VolumeTaylorLocalExpansion),
     (HelmholtzKernel(2, allow_evanescent=True),
-     HelmholtzConformingVolumeTaylorLocalExpansion),
+     LinearPDEConformingVolumeTaylorLocalExpansion),
     (HelmholtzKernel(2, allow_evanescent=True),
-     HelmholtzConformingVolumeTaylorMultipoleExpansion),
+     LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2, allow_evanescent=True), H2DLocalExpansion),
     (HelmholtzKernel(2, allow_evanescent=True), H2DMultipoleExpansion),
     ])
@@ -456,16 +456,16 @@ def test_p2e2p(ctx_factory, base_knl, expn_class, order, with_source_derivative)
 
 @pytest.mark.parametrize("knl, local_expn_class, mpole_expn_class", [
     (LaplaceKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (LaplaceKernel(2), LaplaceConformingVolumeTaylorLocalExpansion,
-     LaplaceConformingVolumeTaylorMultipoleExpansion),
+    (LaplaceKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion,
+     LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-    (HelmholtzKernel(2), HelmholtzConformingVolumeTaylorLocalExpansion,
-     HelmholtzConformingVolumeTaylorMultipoleExpansion),
+    (HelmholtzKernel(2), LinearPDEConformingVolumeTaylorLocalExpansion,
+     LinearPDEConformingVolumeTaylorMultipoleExpansion),
     (HelmholtzKernel(2), H2DLocalExpansion, H2DMultipoleExpansion),
     (StokesletKernel(2, 0, 0), VolumeTaylorLocalExpansion,
      VolumeTaylorMultipoleExpansion),
-    (StokesletKernel(2, 0, 0), BiharmonicConformingVolumeTaylorLocalExpansion,
-     BiharmonicConformingVolumeTaylorMultipoleExpansion),
+    (StokesletKernel(2, 0, 0), LinearPDEConformingVolumeTaylorLocalExpansion,
+     LinearPDEConformingVolumeTaylorMultipoleExpansion),
     ])
 def test_translations(ctx_factory, knl, local_expn_class, mpole_expn_class):
     logging.basicConfig(level=logging.INFO)