diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index c7530ee4a22d6b3c465d5697dd528ee3226cfe51..9ba0c2cdd494b7a950b72b7ede394c4cfd3f5caa 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -299,8 +299,17 @@ int main (int argc, char *argv[])
 
     } else if (energy == "chiral_skyrmion")
     {
-
-      localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, LocalInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+//       // Doesn't work: we are not inside of a template
+//       if constexpr (std::is_same<TargetSpace, UnitVector<double,3> >::value)
+//       {
+        if (parameterSet["interpolationMethod"] == "geodesic")
+            localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, GeodesicInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+        else if (parameterSet["interpolationMethod"] == "projected")
+            localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, ProjectedInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+        else
+            DUNE_THROW(Exception, "Unknown interpolation method " << parameterSet["interpolationMethod"] << " requested!");
+//       } else
+//         DUNE_THROW(Exception, "Build program with TargetSpace = UnitVector<3> for the ChiralSkyrmion energy!");
 
     } else
       DUNE_THROW(Exception, "Unknown energy type '" << energy << "'");