diff --git a/src/finite-strain-elasticity.cc b/src/finite-strain-elasticity.cc
index 6ef8eac9339a87e9248e84a40b994c05bcbf183c..130640e6c07b52cf7053c606f2f15d05ab31683e 100644
--- a/src/finite-strain-elasticity.cc
+++ b/src/finite-strain-elasticity.cc
@@ -31,6 +31,8 @@
 
 #include <dune/gfe/localadolcstiffness.hh>
 #include <dune/gfe/stvenantkirchhoffenergy.hh>
+#include <dune/gfe/neumannenergy.hh>
+#include <dune/gfe/sumenergy.hh>
 #include <dune/gfe/feassembler.hh>
 #include <dune/gfe/trustregionsolver.hh>
 
@@ -239,16 +241,21 @@ int main (int argc, char *argv[]) try
     }
 
     // Assembler using ADOL-C
+    auto elasticEnergy = std::make_shared<StVenantKirchhoffEnergy<GridView,
+                                                                  FEBasis::LocalFiniteElement,
+                                                                  adouble> >(materialParameters);
 
-    StVenantKirchhoffEnergy<GridView,
-                            FEBasis::LocalFiniteElement,
-                            adouble> elasticEnergy(materialParameters,
-                                                  &neumannBoundary,
-                                                  neumannFunction.get());
+    auto neumannEnergy = std::make_shared<NeumannEnergy<GridView,
+                                                        FEBasis::LocalFiniteElement,
+                                                        adouble> >(&neumannBoundary,neumannFunction.get());
+
+    SumEnergy<GridView,
+              FEBasis::LocalFiniteElement,
+              adouble> totalEnergy(elasticEnergy, neumannEnergy);
 
     LocalADOLCStiffness<GridView,
                         FEBasis::LocalFiniteElement,
-                        SolutionType> localADOLCStiffness(&elasticEnergy);
+                        SolutionType> localADOLCStiffness(&totalEnergy);
 
     FEAssembler<FEBasis,SolutionType> assembler(gridView, &localADOLCStiffness);