diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc
index 9f2785521d05882968e95e5da808c2be9d70f9cb..58aafbd80e36fd0b72e211edd8d605dfd0123e4d 100644
--- a/src/cosserat-continuum.cc
+++ b/src/cosserat-continuum.cc
@@ -298,16 +298,27 @@ int main (int argc, char *argv[]) try
         }
 
     // Assembler using ADOL-C
-    using LocalEnergy = std::conditional<dim==dimworld,
-                                         CosseratEnergyLocalStiffness<FEBasis,3,adouble>,
-                                         NonplanarCosseratShellEnergy<FEBasis,3,adouble> >::type;
-
-    LocalEnergy cosseratEnergyADOLCLocalStiffness(materialParameters,
-                                                                              &neumannBoundary,
-                                                                              neumannFunction,
-                                                                              volumeLoad);
+    using LocalEnergyBase = LocalGeodesicFEStiffness<FEBasis,RigidBodyMotion<adouble,3> >;
+
+    std::shared_ptr<LocalEnergyBase> cosseratEnergyADOLCLocalStiffness;
+
+    if (dim==dimworld)
+    {
+      cosseratEnergyADOLCLocalStiffness = std::make_shared<CosseratEnergyLocalStiffness<FEBasis,3,adouble> >(materialParameters,
+                                                                                                             &neumannBoundary,
+                                                                                                             neumannFunction,
+                                                                                                             volumeLoad);
+    }
+    else
+    {
+      cosseratEnergyADOLCLocalStiffness = std::make_shared<NonplanarCosseratShellEnergy<FEBasis,3,adouble> >(materialParameters,
+                                                                                                             &neumannBoundary,
+                                                                                                             neumannFunction,
+                                                                                                             volumeLoad);
+    }
+
     LocalGeodesicFEADOLCStiffness<FEBasis,
-                                  TargetSpace> localGFEADOLCStiffness(&cosseratEnergyADOLCLocalStiffness);
+                                  TargetSpace> localGFEADOLCStiffness(cosseratEnergyADOLCLocalStiffness.get());
 
     GeodesicFEAssembler<FEBasis,TargetSpace> assembler(gridView, &localGFEADOLCStiffness);