diff --git a/extensions/tutorial.hpp b/extensions/tutorial.hpp
index 17e09a52e454f065a35c13b8ea18a3e6dc292640..4ee32d5a911d93c277cada13fcce37b2ba226e3e 100644
--- a/extensions/tutorial.hpp
+++ b/extensions/tutorial.hpp
@@ -872,6 +872,75 @@ int main(int argc, char* argv[])
 The solution is shown in the next pictures. On the left one can see the mesh locally refined on the boundary of a circle:
 \image html elliptImplicit.png "Implicit Dirichlet condition at the boundary of a circle" width=300px
 
+\subsection manual_dirichlet_bc Dirichlet boundary condition with mesh indicators
+
+How to solve the problems of AMDiS with Dirichlet condition, with the priority of one condition over the other? How to enforce the essential
+boundary conditions independent of the boundary number set in the macro-mesh? The answer is to use manual Dirichlet boundary conditions, also
+defined in ExtendedProblemStat.h. There you do not (necessarily) describe the boundary by a boundary number, but by a boundary indicator.
+
+A mesh- or boundary indicator is an AbstractFunction, that return true if the coordinate, where it is evaluated, lies on the desired boundary,
+and false otherwise. (Probably it would be better here to use the struct MeshIndictor that has exactly the desired structure). Optionally you can give
+also a boundary number so that the combination of both describes the boundary part for the Dirichlet condition:
+
+\code
+template<typename ValueContainer>
+  void addManualDirichletBC(AbstractFunction<bool, WorldVector<double> >* meshIndicator,
+			    int row, int col,
+			    ValueContainer &values);
+template<typename ValueContainer>
+  void addManualDirichletBC(BoundaryType nr, AbstractFunction<bool, WorldVector<double> >* meshIndicator,
+			    int row, int col,
+			    ValueContainer &values);		    
+\endcode
+			    
+In the next example we want to enforce a Dirichlet boundary condition on the left boundary, that has the x-coordinate 0.0:
+
+\code
+struct LeftBoundary : AbstractFunction< bool, WorldVector<double> >
+{
+  bool operator()(const WorldVector<double>& x) const
+  {
+    return x[0] < DBL_TOL;
+  }
+};
+
+int main(int argc, char* argv[])
+{
+  AMDiS::init(argc, argv);
+
+  // ===== create and init the scalar problem ===== 
+  ExtendedProblemStat ellipt("ellipt");
+  ellipt.initialize(INIT_ALL);
+
+  // === create adapt info ===
+  AdaptInfo adaptInfo("ellipt->adapt", ellipt.getNumComponents());
+  AdaptStationary adapt("ellipt->adapt", ellipt, adaptInfo);
+  
+  // ===== create matrix operator =====
+  Operator matrixOperator(ellipt.getFeSpace());
+  matrixOperator.addTerm(new Simple_SOT);
+  ellipt.addMatrixOperator(matrixOperator, 0, 0);
+
+  // ===== create rhs operator =====
+  Operator rhsOperator(ellipt.getFeSpace());
+  rhsOperator.addTerm(new Simple_ZOT(1.0));
+  ellipt.addVectorOperator(rhsOperator, 0);
+
+  // ===== add boundary conditions ===== 
+  double one = 1.0;
+  ellipt.addManualDirichletBC(new LeftBoundary, 0, 0, one);
+
+  // ===== start simulation =====
+  adapt.adapt();
+  ellipt.writeFiles(adaptInfo, true);
+
+  AMDiS::finalize();
+}
+\endcode
+
+\image html elliptManual.png "Manual Dirichlet condition at the left boundary of the domain" width=300px
+
+
 */
 
 #endif // AMDIS_EXTENSIONS_TUTORIAL_INCLUDE