diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc
index c086218ef05372efd42aaab6e000e74e55486714..a8a6b3ca9ee0412d5b7c84c1a02f760e4c77a289 100644
--- a/src/cosserat-continuum.cc
+++ b/src/cosserat-continuum.cc
@@ -37,6 +37,7 @@
 #include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/cosseratenergystiffness.hh>
+#include <dune/gfe/nonplanarcosseratshellenergy.hh>
 #include <dune/gfe/cosseratvtkwriter.hh>
 #include <dune/gfe/cosseratvtkreader.hh>
 #include <dune/gfe/geodesicfeassembler.hh>
@@ -290,8 +291,11 @@ int main (int argc, char *argv[]) try
         }
 
     // Assembler using ADOL-C
-    CosseratEnergyLocalStiffness<FEBasis,
-                                 3,adouble> cosseratEnergyADOLCLocalStiffness(materialParameters,
+    using LocalEnergy = std::conditional<dim==dimworld,
+                                         CosseratEnergyLocalStiffness<FEBasis,3,adouble>,
+                                         NonplanarCosseratShellEnergy<FEBasis,3,adouble> >::type;
+
+    LocalEnergy cosseratEnergyADOLCLocalStiffness(materialParameters,
                                                                               &neumannBoundary,
                                                                               neumannFunction,
                                                                               volumeLoad);