diff --git a/AMDiS/src/Operator.cc b/AMDiS/src/Operator.cc
index 8e5ea6cdd6322117301d2be23bb07849eeabf252..946b8d4b91838059163597f9263104a3c012f0a1 100644
--- a/AMDiS/src/Operator.cc
+++ b/AMDiS/src/Operator.cc
@@ -198,33 +198,19 @@ namespace AMDiS {
 
   void Operator::addTerm(ZeroOrderTerm *term)
   {
-    zeroOrder.push_back(term);
-    term->operat = this;
-    for (std::set<const FiniteElemSpace*>::iterator it = term->getAuxFeSpaces().begin();
-   it != term->getAuxFeSpaces().end(); ++it)
-      auxFeSpaces.insert(*it);
+    addZeroOrderTerm(term);
   }
 
+
   void Operator::addTerm(FirstOrderTerm *term,
            FirstOrderType type)
   {
-    if (type == GRD_PSI) {
-      firstOrderGrdPsi.push_back(term);
-    } else {
-      firstOrderGrdPhi.push_back(term);
-    }
-    term->operat = this;
-    for (std::set<const FiniteElemSpace*>::iterator it = term->getAuxFeSpaces().begin();
-   it != term->getAuxFeSpaces().end(); ++it)
-      auxFeSpaces.insert(*it);
+    addFirstOrderTerm(term, type);
   }
 
+
   void Operator::addTerm(SecondOrderTerm *term)
   {
-    secondOrder.push_back(term);
-    term->operat = this;
-    for (std::set<const FiniteElemSpace*>::iterator it = term->getAuxFeSpaces().begin();
-   it != term->getAuxFeSpaces().end(); ++it)
-      auxFeSpaces.insert(*it);
+    addSecondOrderTerm(term);
   }
 }
diff --git a/AMDiS/src/Operator.h b/AMDiS/src/Operator.h
index 2f5badc5ab98eecb0a6304bacdccdb1b6906f2c7..1658e758451a9fc2b8b0684c76270894d3e7f170 100644
--- a/AMDiS/src/Operator.h
+++ b/AMDiS/src/Operator.h
@@ -78,21 +78,26 @@ namespace AMDiS {
       return optimized;
     }
 
-    /// Adds a SecondOrderTerm to the Operator
+    /// Adds a ZeroOrderTerm to the Operator
     template <typename T>
-    void addSecondOrderTerm(T *term);
+    void addZeroOrderTerm(T *term);
 
     /// Adds a FirstOrderTerm to the Operator
     template <typename T>
     void addFirstOrderTerm(T *term, FirstOrderType type = GRD_PHI);
 
-    /// Adds a ZeroOrderTerm to the Operator
+    /// Adds a SecondOrderTerm to the Operator
     template <typename T>
-    void addZeroOrderTerm(T *term);
+    void addSecondOrderTerm(T *term);
 
+    /// Adds a ZeroOrderTerm to the Operator
     void addTerm(ZeroOrderTerm *term);
+
+    /// Adds a FirstOrderTerm to the Operator
     void addTerm(FirstOrderTerm *term,
       FirstOrderType type);
+
+    /// Adds a SecondOrderTerm to the Operator
     void addTerm(SecondOrderTerm *term);
 
     /** \brief