diff --git a/AMDiS/src/FirstOrderTerm.cc b/AMDiS/src/FirstOrderTerm.cc
index 894d23cc79563f79959a6891c628d7e928edae34..c083edeb2a284361d90fea43dca5b1b6bae8b9a7 100644
--- a/AMDiS/src/FirstOrderTerm.cc
+++ b/AMDiS/src/FirstOrderTerm.cc
@@ -132,7 +132,7 @@ namespace AMDiS {
   {
     const DimVec<WorldVector<double> > &Lambda = elInfo->getGrdLambda();
     for (int iq = 0; iq < nPoints; iq++)
-      lb(Lambda, b, Lb[iq], (*g)(coordsAtQPs[iq]));
+      lb(Lambda, *b, Lb[iq], (*g)(coordsAtQPs[iq]));
   }
 
   void VecCoordsAtQP_FOT::eval(int nPoints,
diff --git a/AMDiS/src/FirstOrderTerm.h b/AMDiS/src/FirstOrderTerm.h
index 3d99e78b83c5bb3fa23ad685c1f6320fc6328aff..a7e8d49d2eab6b89ae308a42310e6196a88335db 100644
--- a/AMDiS/src/FirstOrderTerm.h
+++ b/AMDiS/src/FirstOrderTerm.h
@@ -198,7 +198,7 @@ namespace AMDiS {
   {
   public:
     /// Constructor.
-    Vector_FOT(WorldVector<double> wv) 
+    Vector_FOT(WorldVector<double> *wv) 
       : FirstOrderTerm(0), b(wv) 
     {}
 
@@ -221,7 +221,7 @@ namespace AMDiS {
 	  lb_one(Lambda, Lb[iq], 1.0);
       } else {
 	for (int iq = 0; iq < nPoints; iq++)
-	  lb(Lambda, b, Lb[iq], 1.0);
+	  lb(Lambda, *b, Lb[iq], 1.0);
       }
     }
 
@@ -235,12 +235,12 @@ namespace AMDiS {
     {
       if (grdUhAtQP)
 	for (int iq = 0; iq < nPoints; iq++)
-	  result[iq] += b * grdUhAtQP[iq] * factor; 
+	  result[iq] += *b * grdUhAtQP[iq] * factor; 
     }
 
   protected:
     /// Vector which is multiplied with \f$ \nabla u(\vec{x}) \f$
-    WorldVector<double> b;
+    WorldVector<double> *b;
   };
 
   /**
@@ -346,7 +346,7 @@ namespace AMDiS {
   public:
     /// Constructor.
     VecCoordsAtQP_FOT(AbstractFunction<double, WorldVector<double> > *af,
-		      WorldVector<double> wv)
+		      WorldVector<double> *wv)
       : FirstOrderTerm(af->getDegree()), g(af), b(wv)
     {}
 
@@ -374,7 +374,7 @@ namespace AMDiS {
     AbstractFunction<double, WorldVector<double> > *g;
 
     /// Coefficient vector.
-    WorldVector<double> b;
+    WorldVector<double> *b;
   };
 
   /**