diff --git a/AMDiS/src/Boundary.h b/AMDiS/src/Boundary.h
index 40c7634bf7741624aca36ed32600215abe085dcb..26e60034009091acb8b6bf9ddc9918cc2db2c01a 100644
--- a/AMDiS/src/Boundary.h
+++ b/AMDiS/src/Boundary.h
@@ -28,12 +28,9 @@
 
 namespace AMDiS {
 
-  /// Contains boundary constants
+  /// Flag to denote interior boundaryies.
   typedef enum {
-    INTERIOR = 0,   /**< interior => no boundary (b = 0) */
-    DIRICHLET = 1,  /**< dirichlet boundary (b > 0) */
-    NEUMANN = -1,   /**< neumann boundary  (-100 < b < 0) */
-    ROBIN = -100    /**< robin boundary (b <= -100) */
+    INTERIOR = 0
   } BoundaryConstants;
 
   /// Type specifier for the different boundary types 
diff --git a/AMDiS/src/io/MacroInfo.cc b/AMDiS/src/io/MacroInfo.cc
index a1a853aef5fd6312fc2e0cab519ee4ce0c04d3c6..520bfc7733840a5c4adb8ea864b71b40672a3cf7 100644
--- a/AMDiS/src/io/MacroInfo.cc
+++ b/AMDiS/src/io/MacroInfo.cc
@@ -491,12 +491,16 @@ namespace AMDiS {
 
   void MacroInfo::dirichletBoundary()
   {
+    // === Traverse all elements and set either interior boundaries, if the    ===
+    // === element has a neighbour on this bound. Otherwise set some arbitrary ===
+    // === Dirichlet boundary conditions.                                      ===
+
     for (int i = 0; i < static_cast<int>(mel.size()); i++)
       for (int k = 0; k < mesh->getGeo(NEIGH); k++)
 	if (mel[i]->neighbour[k])
 	  mel[i]->boundary[k] = INTERIOR;
 	else
-	  mel[i]->boundary[k] = DIRICHLET;
+	  mel[i]->boundary[k] = 1;
   }
 
 
@@ -521,13 +525,17 @@ namespace AMDiS {
 	   ++melIt, i++) {
 	for (int j = 0; j < mesh->getGeo(NEIGH); j++) {
 	  if ((*melIt)->getBoundary(j) != INTERIOR) {
-	    if ((*melIt)->getBoundary(j) >= DIRICHLET) {
+	    if ((*melIt)->getBoundary(j) > 0) {
+	      // Here we have some Dirichlet boundary conditions.
+
 	      int j1 = mel_vertex[i][(j + 1) % 3];
 	      int j2 = mel_vertex[i][(j + 2) % 3];
 	      
 	      bound[j1] = std::max(bound[j1], (*melIt)->getBoundary(j));
 	      bound[j2] = std::max(bound[j2], (*melIt)->getBoundary(j));
-	    } else if ((*melIt)->getBoundary(j) <= NEUMANN) {
+	    } else {
+	      // Otherwise we have some Neumann boundary conditions.
+
 	      int j1 = mel_vertex[i][(j + 1) % 3];
 	      int j2 = mel_vertex[i][(j + 2) % 3];
 	      
diff --git a/demo/init/ball.dat.2d b/demo/init/ball.dat.2d
index 51d27cb8fc34a0657a2a530c8170306237d8a445..dbaaba4b54a973456138295d0c94bef100707919 100644
--- a/demo/init/ball.dat.2d
+++ b/demo/init/ball.dat.2d
@@ -26,16 +26,7 @@ ball->adapt->max iteration:   4
 ball->adapt->info:            8
 
 ball->output->filename:       ball
-
 ball->output->ParaView format: 1
-
-ball->output->TecPlot format: 0
-ball->output->TecPlot ext:    .tec
-
-ball->output->AMDiS format:   0
-ball->output->AMDiS mesh ext: .mesh
-ball->output->AMDiS data ext: .dat
-
 ball->output->append index:   0
 ball->output->index length:   6
 ball->output->index decimals: 3
diff --git a/demo/init/ball.dat.3d b/demo/init/ball.dat.3d
index 0a9dabf7500918e735e40cf356d93f5d6b3ef8c8..7221bdd63dc1e2232a90533aa39a4a007aa455d9 100644
--- a/demo/init/ball.dat.3d
+++ b/demo/init/ball.dat.3d
@@ -16,10 +16,6 @@ ball->estimator:              0
 ball->marker->strategy:       0 % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
 
 ball->output->filename:       output/ball
-
 ball->output->ParaView format: 1
 
-ball->output->AMDiS format:   0
-ball->output->AMDiS mesh ext: .mesh
-ball->output->AMDiS data ext: .dat
 
diff --git a/demo/init/bunny.init b/demo/init/bunny.init
index 4acd888d738b179f0e39a67f4cc9ff620ac032d9..0b0af6f5ba6f1138fbeb70cb367931177470fa1d 100644
--- a/demo/init/bunny.init
+++ b/demo/init/bunny.init
@@ -20,27 +20,18 @@ bunny->estimator->error norm: 1   % 1: H1_NORM, 2: L2_NORM
 bunny->estimator->C1:         0.1 % constant of jump residual
 
 bunny->marker->strategy:      0   % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
-bunny->marker->MSGamma:      0.5
-
-bunny->adapt->tolerance:     1e-8
-bunny->adapt->refine bisections: 1
-bunny->adapt->max iteration: 0
-bunny->adapt->info:          8
-
-bunny->output->filename:       bunny_fixed
-
-bunny->output->ParaView format: 1
-
-bunny->output->TecPlot format: 0
-bunny->output->TecPlot ext:    .tec
-
-bunny->output->AMDiS format:   0
-bunny->output->AMDiS mesh ext: .mesh
-bunny->output->AMDiS data ext: .dat
-
-bunny->output->append index:   0
-bunny->output->index length:   6
-bunny->output->index decimals: 3
+bunny->marker->MSGamma:       0.5
+
+bunny->adapt->tolerance:          1e-8
+bunny->adapt->refine bisections:  1
+bunny->adapt->max iteration:      0
+bunny->adapt->info:               8
+
+bunny->output->filename:         bunny_fixed
+bunny->output->ParaView format:  1
+bunny->output->append index:     0
+bunny->output->index length:     6
+bunny->output->index decimals:   3
 
 WAIT: 1
 
diff --git a/demo/init/heat.dat.1d b/demo/init/heat.dat.1d
index df8c3970f9bae2ef36ac6ba2ab7dbc7823c325c2..1776487c0406d4b56921d7af0731a8686a8b5aaf 100644
--- a/demo/init/heat.dat.1d
+++ b/demo/init/heat.dat.1d
@@ -4,7 +4,7 @@ heatMesh->macro file name:            ./macro/macro.stand.1d
 heatMesh->global refinements:         0
 
 heat->space->polynomial degree:       1
-heat->space->dim:                    1
+heat->space->dim:                     1
 heat->space->mesh:                    heatMesh
 
 heat->space->solver:                  cg
diff --git a/demo/init/neumann.dat.2d b/demo/init/neumann.dat.2d
index 808c2334ef16c4a82385fa700f4577dfd2d63923..ef5a47f09e6a97cf0401c7f197b84f6909cf168e 100644
--- a/demo/init/neumann.dat.2d
+++ b/demo/init/neumann.dat.2d
@@ -24,10 +24,5 @@ neumann->adapt->tolerance:       1e-2
 neumann->adapt->max iteration:   100
 neumann->adapt->refine bisections:  2
 
-neumann->output->filename:       output/neumann
-
+neumann->output->filename:        output/neumann
 neumann->output->ParaView format: 1
-
-neumann->output->AMDiS format:   0
-neumann->output->AMDiS mesh ext: .mesh
-neumann->output->AMDiS data ext: .dat
diff --git a/demo/init/parametric.dat.3d b/demo/init/parametric.dat.3d
index d1b87fb2721c06e7af0b12ba7947fbf7cf129530..67962d5e2d1bfe37228f3f19c9d55c485596d9eb 100644
--- a/demo/init/parametric.dat.3d
+++ b/demo/init/parametric.dat.3d
@@ -19,7 +19,7 @@ parametric->estimator->error norm: 1   % 1: H1_NORM, 2: L2_NORM
 parametric->estimator->C1:         0.1 % constant of jump residual
 
 parametric->marker->strategy:      2   % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
-parametric->marker->MSGamma:      0.5
+parametric->marker->MSGamma:       0.5
 
 parametric->adapt->tolerance:     1e-8
 parametric->adapt->refine bisections: 1
@@ -27,19 +27,10 @@ parametric->adapt->max iteration: 8
 parametric->adapt->info:          8
 
 parametric->output->filename:         parametric
-
 parametric->output->ParaView format:  1
-
-parametric->output->TecPlot format:   0
-parametric->output->TecPlot ext:      .tec
-
-parametric->output->AMDiS format:     0
-parametric->output->AMDiS mesh ext:   .mesh
-parametric->output->AMDiS data ext:   .dat
-
-parametric->output->append index:   0
-parametric->output->index length:   6
-parametric->output->index decimals: 3
+parametric->output->append index:     0
+parametric->output->index length:     6
+parametric->output->index decimals:   3
 
 WAIT: 1
 
diff --git a/demo/init/periodic.dat.1d b/demo/init/periodic.dat.1d
index b829698cb69f01a6f07998a76aeded8b869c5a87..b7929bd640b50625389b298cbee00f05f0222379 100644
--- a/demo/init/periodic.dat.1d
+++ b/demo/init/periodic.dat.1d
@@ -1,11 +1,8 @@
 dimension of world:             1
 
 periodicMesh->macro file name:    ./macro/periodic.macro.1d
-periodicMesh->global refinements: 0
-
 periodicMesh->periodic file:      ./init/periodic.per.1d
-
-periodicMesh->preserve coarse dofs: 0
+periodicMesh->global refinements: 0
 
 periodic->mesh:                   periodicMesh
 periodic->dim:                    1
@@ -26,24 +23,15 @@ periodic->estimator->C1:          0.0 % constant of jump residual
 periodic->marker->strategy:       2 % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
 periodic->marker->MSGamma:        0.5
 
-periodic->adapt->tolerance:       1e-6
-periodic->adapt->max iteration:   14
+periodic->adapt->tolerance:          1e-6
+periodic->adapt->max iteration:      14
 periodic->adapt->refine bisections:  2
-periodic->adapt->coarsen allowed:  0
-
-periodic->output->filename:       periodic
+periodic->adapt->coarsen allowed:    0
 
+periodic->output->filename:         periodic
 periodic->output->ParaView format:  1
-
-periodic->output->TecPlot format: 0
-periodic->output->TecPlot ext:    .tec
-
-periodic->output->AMDiS format:   0
-periodic->output->AMDiS mesh ext: .mesh
-periodic->output->AMDiS data ext: .dat
-
-periodic->output->append index:   0
-periodic->output->index length:   6
-periodic->output->index decimals: 3
+periodic->output->append index:     0
+periodic->output->index length:     6
+periodic->output->index decimals:   3
 
 WAIT:                           1
diff --git a/demo/init/periodic.dat.2d b/demo/init/periodic.dat.2d
index 2fee81c59fc79c6b556b5e647a7f1acb494bc2f9..d07bccd208b2cd5e4fbbba991859e9f199fda094 100644
--- a/demo/init/periodic.dat.2d
+++ b/demo/init/periodic.dat.2d
@@ -1,11 +1,8 @@
 dimension of world:             2
 
-periodicMesh->macro file name:    ./macro/periodic.macro.2d
-periodicMesh->global refinements: 0
-
-periodicMesh->periodic file:      ./init/periodic.per.2d
-
-periodicMesh->preserve coarse dofs: 0
+periodicMesh->macro file name:     ./macro/periodic.macro.2d
+periodicMesh->periodic file:       ./init/periodic.per.2d
+periodicMesh->global refinements:  0
 
 periodic->mesh:                   periodicMesh
 periodic->dim:                    2
@@ -26,24 +23,14 @@ periodic->estimator->C1:          0.0 % constant of jump residual
 periodic->marker->strategy:       2 % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
 periodic->marker->MSGamma:        0.5
 
-periodic->adapt->tolerance:       1e-2
-periodic->adapt->max iteration:   100
+periodic->adapt->tolerance:          1e-2
+periodic->adapt->max iteration:      100
 periodic->adapt->refine bisections:  2
-periodic->adapt->coarsen allowed:  0
-
-periodic->output->filename:       output/periodic
+periodic->adapt->coarsen allowed:    0
 
+periodic->output->filename:         output/periodic
 periodic->output->ParaView format:  1
-
-periodic->output->TecPlot format: 0
-periodic->output->TecPlot ext:    .tec
-
-periodic->output->AMDiS format:   0
-periodic->output->AMDiS mesh ext: .mesh
-periodic->output->AMDiS data ext: .dat
-
-periodic->output->append index:   0
-periodic->output->index length:   6
-periodic->output->index decimals: 3
+periodic->output->index length:     6
+periodic->output->index decimals:   3
 
 WAIT:                           0
diff --git a/demo/init/periodic.dat.3d b/demo/init/periodic.dat.3d
index 25f40f44e0040cc51634662e448456e5d3ed7fb2..f2537c79a7b6379040afe5aab718a37b060b1f77 100644
--- a/demo/init/periodic.dat.3d
+++ b/demo/init/periodic.dat.3d
@@ -1,11 +1,8 @@
 dimension of world:             3
 
-periodicMesh->macro file name:    ./macro/periodic.macro.3d
-periodicMesh->global refinements: 0
-
-periodicMesh->periodic file:      ./init/periodic.per.3d
-
-periodicMesh->preserve coarse dofs: 0
+periodicMesh->macro file name:     ./macro/periodic.macro.3d
+periodicMesh->periodic file:       ./init/periodic.per.3d
+periodicMesh->global refinements:  0
 
 periodic->mesh:                   periodicMesh
 periodic->dim:                    3
@@ -26,24 +23,15 @@ periodic->estimator->C1:          0.0 % constant of jump residual
 periodic->marker->strategy:       2 % 0: no adaption 1: GR 2: MS 3: ES 4:GERS
 periodic->marker->MSGamma:        0.5
 
-periodic->adapt->tolerance:       1e-6
-periodic->adapt->max iteration:   100
+periodic->adapt->tolerance:          1e-6
+periodic->adapt->max iteration:      100
 periodic->adapt->refine bisections:  3
-periodic->adapt->coarsen allowed:  0
-
-periodic->output->filename:       periodic
+periodic->adapt->coarsen allowed:    0
 
+periodic->output->filename:         periodic
 periodic->output->ParaView format:  1
-
-periodic->output->TecPlot format: 0
-periodic->output->TecPlot ext:    .tec
-
-periodic->output->AMDiS format:   0
-periodic->output->AMDiS mesh ext: .mesh
-periodic->output->AMDiS data ext: .dat
-
-periodic->output->append index:   0
-periodic->output->index length:   6
-periodic->output->index decimals: 3
+periodic->output->append index:     0
+periodic->output->index length:     6
+periodic->output->index decimals:   3
 
 WAIT:                           1
diff --git a/demo/init/sphere.dat.3d b/demo/init/sphere.dat.3d
index de70ca0d67368a2f2a120a0b28bc6b02a102a673..8eb23bf68d800188d282a29eb521b65650d3cd84 100644
--- a/demo/init/sphere.dat.3d
+++ b/demo/init/sphere.dat.3d
@@ -15,10 +15,7 @@ sphere->solver->left precon:   diag
 sphere->estimator:             0
 sphere->marker->strategy:      0
 
-sphere->output->filename:       output/sphere
-sphere->output->ParaView format: 1
-sphere->output->AMDiS format:   0
-sphere->output->AMDiS mesh ext: .mesh
-sphere->output->AMDiS data ext: .dat
+sphere->output->filename:         output/sphere
+sphere->output->ParaView format:  1
 
 
diff --git a/demo/init/torus.dat.3d b/demo/init/torus.dat.3d
index 0f774581eea620f1f04a915d47926e8e44461bea..22ea8574e4fef7dbed823622e92053c16f3a50ab 100644
--- a/demo/init/torus.dat.3d
+++ b/demo/init/torus.dat.3d
@@ -14,9 +14,6 @@ torus->solver->left precon:   diag
 torus->estimator:             0
 torus->marker->strategy:      0 
 
-torus->output->filename:       output/torus
+torus->output->filename:         output/torus
 torus->output->ParaView format:  1
-torus->output->AMDiS format:   0
-torus->output->AMDiS mesh ext: .mesh
-torus->output->AMDiS data ext: .dat
 
diff --git a/demo/init/vecheat.dat.1d b/demo/init/vecheat.dat.1d
index d458f91bbfc22242b78ca4f805b707905e02cfae..77c0f4cd6ccadb2a4c1eb2f4a95d338416248762 100644
--- a/demo/init/vecheat.dat.1d
+++ b/demo/init/vecheat.dat.1d
@@ -3,9 +3,9 @@ dimension of world:                          1
 vecheatMesh->macro file name:                ./macro/macro.stand.1d
 vecheatMesh->global refinements:             0
 
-vecheat->space->polynomial degree[0]:           1
-vecheat->space->polynomial degree[1]:           1
-
+vecheat->space->polynomial degree[0]:        1
+vecheat->space->polynomial degree[1]:        1
+vecheat->space->dim:                         1
 vecheat->space->mesh:                        vecheatMesh
 
 vecheat->space->components:                  2
@@ -29,25 +29,15 @@ vecheat->space->estimator[1]->C3:            1.0
 
 vecheat->theta:                              1.0
 
-vecheat->adapt[0]->tolerance:         0.01
-vecheat->adapt[1]->tolerance:         0.01
-
-vecheat->adapt->timestep:             0.01
-
-vecheat->adapt->max iteration:        2
-vecheat->adapt->refine bisections: 1
-vecheat->adapt->coarsen bisections: 1
+vecheat->adapt[0]->tolerance:                0.01
+vecheat->adapt[1]->tolerance:                0.01
 
+vecheat->adapt[0]->time tolerance:           0.01
+vecheat->adapt[1]->time tolerance:           0.01
 
-vecheat->adapt[0]->rel space error:   0.5
-vecheat->adapt[0]->rel time error:    0.5
-vecheat->adapt[0]->info:              8
-vecheat->adapt[0]->coarsen allowed:   1   % 0|1
-
-vecheat->adapt[1]->rel space error:   0.5
-vecheat->adapt[1]->rel time error:    0.5
-vecheat->adapt[1]->info:              8
-vecheat->adapt[1]->coarsen allowed:   1   % 0|1
+vecheat->adapt->timestep:                    0.01
+vecheat->adapt->start time:                  0.0
+vecheat->adapt->end time:                    1.0
 
 vecheat->adapt->strategy:                    1   % 0=explicit, 1=implicit
 vecheat->adapt->max iteration:               1
@@ -58,8 +48,6 @@ vecheat->initial->marker[1]->strategy:       2    % 0=none, 1=GR, 2=MS, 3=ES, 4=
 vecheat->initial->adapt->max iteration:      10
 vecheat->initial->adapt->info:               8
 
-vecheat->space->dim:                         1
-
 vecheat->space->marker[0]->strategy:         3    % 0=none, 1=GR, 2=MS, 3=ES, 4=GERS
 vecheat->space->marker[0]->ESTheta:          0.9
 vecheat->space->marker[0]->ESThetaC:         0.05
@@ -70,35 +58,19 @@ vecheat->space->marker[1]->ESTheta:          0.9
 vecheat->space->marker[1]->ESThetaC:         0.05
 vecheat->space->marker[1]->info:             8
 
-vecheat->space->output[0]->filename:         vecheat0_
-
-vecheat->space->output[0]->ParaView format:  0
-
-vecheat->space->output[0]->TecPlot format:   0
-vecheat->space->output[0]->TecPlot ext:      .tec
-
-vecheat->space->output[0]->AMDiS format:     0
-vecheat->space->output[0]->AMDiS mesh ext:   .mesh
-vecheat->space->output[0]->AMDiS data ext:   .dat
-
-vecheat->space->output[0]->append index:     1
-vecheat->space->output[0]->index length:     6
-vecheat->space->output[0]->index decimals:   3
-
-vecheat->space->output[1]->filename:         vecheat1_
-
-vecheat->space->output[1]->ParaView format:  0
-
-vecheat->space->output[1]->TecPlot format:   0
-vecheat->space->output[1]->TecPlot ext:      .tec
-
-vecheat->space->output[1]->AMDiS format:     0
-vecheat->space->output[1]->AMDiS mesh ext:   .mesh
-vecheat->space->output[1]->AMDiS data ext:   .dat
-
-vecheat->space->output[1]->append index:     1
-vecheat->space->output[1]->index length:     6
-vecheat->space->output[1]->index decimals:   3
+vecheat->space->output[0]->filename:            vecheat0_
+vecheat->space->output[0]->ParaView format:     1
+vecheat->space->output[0]->ParaView animation:  1
+vecheat->space->output[0]->append index:        1
+vecheat->space->output[0]->index length:        6
+vecheat->space->output[0]->index decimals:      3
+
+vecheat->space->output[1]->filename:            vecheat1_
+vecheat->space->output[1]->ParaView format:     1
+vecheat->space->output[1]->ParaView animation:  1
+vecheat->space->output[1]->append index:        1
+vecheat->space->output[1]->index length:        6
+vecheat->space->output[1]->index decimals:      3
 
 WAIT:                                        0
 
diff --git a/demo/init/vecheat.dat.2d b/demo/init/vecheat.dat.2d
index 2e31cbde3f977b0263ea21f1276ff3a51cf4a044..3c86895f896afbe445bcb4868b182ea566fc7577 100644
--- a/demo/init/vecheat.dat.2d
+++ b/demo/init/vecheat.dat.2d
@@ -3,9 +3,9 @@ dimension of world:                          2
 vecheatMesh->macro file name:                ./macro/macro.stand.2d
 vecheatMesh->global refinements:             5
 
-vecheat->space->polynomial degree[0]:           1
-vecheat->space->polynomial degree[1]:           1
-
+vecheat->space->polynomial degree[0]:        1
+vecheat->space->polynomial degree[1]:        1
+vecheat->space->dim:                         2
 vecheat->space->mesh:                        vecheatMesh
 
 vecheat->space->components:                  2
@@ -32,21 +32,15 @@ vecheat->theta:                              1.0
 vecheat->adapt->refine bisections: 2
 vecheat->adapt->coarsen bisections: 2
 
-vecheat->adapt[0]->tolerance:              0.001
-vecheat->adapt[0]->tolerance:              0.001
-
-vecheat->adapt[0]->time tolerance:         0.1
-vecheat->adapt[1]->time tolerance:         0.1
-
-vecheat->adapt->timestep:             0.01
-
-vecheat->adapt->max iteration:        2
+vecheat->adapt[0]->tolerance:                0.001
+vecheat->adapt[0]->tolerance:                0.001
+vecheat->adapt[0]->time tolerance:           0.1
+vecheat->adapt[1]->time tolerance:           0.1
 
-vecheat->adapt[0]->info:              8
-vecheat->adapt[0]->coarsen allowed:   1   % 0|1
+vecheat->adapt->timestep:                    0.01
+vecheat->adapt->start time:                  0.0
+vecheat->adapt->end time:                    1.0
 
-vecheat->adapt[1]->info:              8
-vecheat->adapt[1]->coarsen allowed:   1   % 0|1
 
 vecheat->adapt->strategy:                    1   % 0=explicit, 1=implicit
 vecheat->adapt->max iteration:               1
@@ -57,8 +51,6 @@ vecheat->initial->marker[1]->strategy:       2    % 0=none, 1=GR, 2=MS, 3=ES, 4=
 vecheat->initial->adapt->max iteration:      10
 vecheat->initial->adapt->info:               8
 
-vecheat->space->dim:                         2
-
 vecheat->space->marker[0]->strategy:         3    % 0=none, 1=GR, 2=MS, 3=ES, 4=GERS
 vecheat->space->marker[0]->ESTheta:          0.9
 vecheat->space->marker[0]->ESThetaC:         0.05
@@ -69,11 +61,20 @@ vecheat->space->marker[1]->ESTheta:          0.9
 vecheat->space->marker[1]->ESThetaC:         0.05
 vecheat->space->marker[1]->info:             8
 
-vecheat->space->output->filename:         vecheat_
-vecheat->space->output->ParaView format:  1
-vecheat->space->output->append index:     1
-vecheat->space->output->index length:     6
-vecheat->space->output->index decimals:   3
+vecheat->space->output[0]->filename:            vecheat0_
+vecheat->space->output[0]->ParaView format:     1
+vecheat->space->output[0]->ParaView animation:  1
+vecheat->space->output[0]->append index:        1
+vecheat->space->output[0]->index length:        6
+vecheat->space->output[0]->index decimals:      3
+
+vecheat->space->output[1]->filename:            vecheat1_
+vecheat->space->output[1]->ParaView format:     1
+vecheat->space->output[1]->ParaView animation:  1
+vecheat->space->output[1]->append index:        1
+vecheat->space->output[1]->index length:        6
+vecheat->space->output[1]->index decimals:      3
+
 
 WAIT:                                        0
 
diff --git a/demo/init/vecheat.dat.3d b/demo/init/vecheat.dat.3d
index d8e908eaa95c293781c9c50438f08f3348a73d2f..95a3950f75d719d29d4bdc246ae444ab9575f104 100644
--- a/demo/init/vecheat.dat.3d
+++ b/demo/init/vecheat.dat.3d
@@ -1,20 +1,20 @@
 dimension of world:                          3
 
 vecheatMesh->macro file name:                ./macro/macro.stand.3d
-vecheatMesh->global refinements:             0
-
-vecheat->space->polynomial degree[0]:           1
-vecheat->space->polynomial degree[1]:           1
+vecheatMesh->global refinements:             3
 
+vecheat->space->polynomial degree[0]:        1
+vecheat->space->polynomial degree[1]:        1
+vecheat->space->dim:                         3
 vecheat->space->mesh:                        vecheatMesh
 
 vecheat->space->components:                  2
 
-vecheat->space->solver:                      cg
+vecheat->space->solver:                      umfpack 
 vecheat->space->solver->max iteration:       1000
 vecheat->space->solver->tolerance:           1.e-8
-vecheat->space->solver->info:                8
-vecheat->space->solver->left precon:         diag
+vecheat->space->solver->info:                2
+vecheat->space->solver->left precon:         no
 vecheat->space->solver->right precon:        no
 
 vecheat->space->estimator[0]:                residual
@@ -29,25 +29,18 @@ vecheat->space->estimator[1]->C3:            1.0
 
 vecheat->theta:                              1.0
 
-vecheat->adapt->refine bisections: 3
-vecheat->adapt->coarsen bisections: 3
-
-vecheat->adapt[0]->tolerance:         0.01
-vecheat->adapt[1]->tolerance:         0.01
-
-vecheat->adapt->timestep:             0.01
+vecheat->adapt->refine bisections: 2
+vecheat->adapt->coarsen bisections: 2
 
-vecheat->adapt->max iteration:        2
+vecheat->adapt[0]->tolerance:                0.001
+vecheat->adapt[0]->tolerance:                0.001
+vecheat->adapt[0]->time tolerance:           0.1
+vecheat->adapt[1]->time tolerance:           0.1
 
-vecheat->adapt[0]->rel space error:   0.5
-vecheat->adapt[0]->rel time error:    0.5
-vecheat->adapt[0]->info:              8
-vecheat->adapt[0]->coarsen allowed:   1   % 0|1
+vecheat->adapt->timestep:                    0.01
+vecheat->adapt->start time:                  0.0
+vecheat->adapt->end time:                    1.0
 
-vecheat->adapt[1]->rel space error:   0.5
-vecheat->adapt[1]->rel time error:    0.5
-vecheat->adapt[1]->info:              8
-vecheat->adapt[1]->coarsen allowed:   1   % 0|1
 
 vecheat->adapt->strategy:                    1   % 0=explicit, 1=implicit
 vecheat->adapt->max iteration:               1
@@ -58,8 +51,6 @@ vecheat->initial->marker[1]->strategy:       2    % 0=none, 1=GR, 2=MS, 3=ES, 4=
 vecheat->initial->adapt->max iteration:      10
 vecheat->initial->adapt->info:               8
 
-vecheat->space->dim:                         3
-
 vecheat->space->marker[0]->strategy:         3    % 0=none, 1=GR, 2=MS, 3=ES, 4=GERS
 vecheat->space->marker[0]->ESTheta:          0.9
 vecheat->space->marker[0]->ESThetaC:         0.05
@@ -70,35 +61,20 @@ vecheat->space->marker[1]->ESTheta:          0.9
 vecheat->space->marker[1]->ESThetaC:         0.05
 vecheat->space->marker[1]->info:             8
 
-vecheat->space->output[0]->filename:         vecheat0_
-
-vecheat->space->output[0]->ParaView format:  0
-
-vecheat->space->output[0]->TecPlot format:   0
-vecheat->space->output[0]->TecPlot ext:      .tec
-
-vecheat->space->output[0]->AMDiS format:     0
-vecheat->space->output[0]->AMDiS mesh ext:   .mesh
-vecheat->space->output[0]->AMDiS data ext:   .dat
-
-vecheat->space->output[0]->append index:     1
-vecheat->space->output[0]->index length:     6
-vecheat->space->output[0]->index decimals:   3
-
-vecheat->space->output[1]->filename:         vecheat1_
-
-vecheat->space->output[1]->ParaView format:  0
-
-vecheat->space->output[1]->TecPlot format:   0
-vecheat->space->output[1]->TecPlot ext:      .tec
+vecheat->space->output[0]->filename:            vecheat0_
+vecheat->space->output[0]->ParaView format:     1
+vecheat->space->output[0]->ParaView animation:  1
+vecheat->space->output[0]->append index:        1
+vecheat->space->output[0]->index length:        6
+vecheat->space->output[0]->index decimals:      3
 
-vecheat->space->output[1]->AMDiS format:     0
-vecheat->space->output[1]->AMDiS mesh ext:   .mesh
-vecheat->space->output[1]->AMDiS data ext:   .dat
+vecheat->space->output[1]->filename:            vecheat1_
+vecheat->space->output[1]->ParaView format:     1
+vecheat->space->output[1]->ParaView animation:  1
+vecheat->space->output[1]->append index:        1
+vecheat->space->output[1]->index length:        6
+vecheat->space->output[1]->index decimals:      3
 
-vecheat->space->output[1]->append index:     1
-vecheat->space->output[1]->index length:     6
-vecheat->space->output[1]->index decimals:   3
 
 WAIT:                                        0
 
diff --git a/demo/src/heat.cc b/demo/src/heat.cc
index c889d3ae843f99acd41b76e8f3060a2b93bf6339..5debfdf7eaf728f8e9b66e62b3d06f194ecfa69e 100644
--- a/demo/src/heat.cc
+++ b/demo/src/heat.cc
@@ -174,13 +174,6 @@ int main(int argc, char** argv)
 				adaptInfoInitial);
 
 
-  // ===== create boundary functions =====
-  G *boundaryFct = new G;
-  boundaryFct->setTimePtr(heat.getTime());
-  heat.setExactSolution(boundaryFct);
-  heatSpace.addDirichletBC(1, boundaryFct);
-
-
   // ===== create rhs functions =====
   int degree = heatSpace.getFeSpace()->getBasisFcts()->getDegree();
   F *rhsFct = new F(degree);
@@ -213,6 +206,13 @@ int main(int argc, char** argv)
   heatSpace.addVectorOperator(F);
 
 
+  // ===== create boundary functions =====
+  G *boundaryFct = new G;
+  boundaryFct->setTimePtr(heat.getTime());
+  heat.setExactSolution(boundaryFct);
+  heatSpace.addDirichletBC(1, boundaryFct);
+
+
   // ===== start adaption loop =====
   int errorCode = adaptInstat.adapt();
 
diff --git a/demo/src/vecheat.cc b/demo/src/vecheat.cc
index 815c268523e7303f34cce1b0996fdb5e44740afb..a1df991676de0ce9d6b1212e5e3a22665a863825 100644
--- a/demo/src/vecheat.cc
+++ b/demo/src/vecheat.cc
@@ -30,7 +30,7 @@ public:
   /// Implementation of AbstractFunction::operator().
   double operator()(const WorldVector<double>& x) const 
   {
-    int dim = x.getSize();
+    int dim = Global::getGeo(WORLD);
     double r2 = x * x;
     double ux = sin(M_PI * (*timePtr)) * exp(-10.0 * r2);
     double ut = M_PI * cos(M_PI * (*timePtr)) * exp(-10.0 * r2);
@@ -68,9 +68,8 @@ public:
   /// set the time in all needed functions!
   void setTime(AdaptInfo *adaptInfo) 
   {
+    ProblemInstat::setTime(adaptInfo);
     rhsTime = adaptInfo->getTime() - (1-theta) * adaptInfo->getTimestep();
-    boundaryTime = adaptInfo->getTime();
-    tau1 = 1.0 / adaptInfo->getTimestep();    
   }
 
   // ===== initial problem methods =====================================
@@ -79,7 +78,7 @@ public:
   void solveInitialProblem(AdaptInfo *adaptInfo) 
   {
     int size = problemStat->getNumComponents();
-    boundaryTime = rhsTime = 0.0;
+    rhsTime = 0.0;
     for (int i = 0; i < size; i++) {
       problemStat->getMesh(i)->dofCompress();
       problemStat->getSolution()->getDOFVector(i)->interpol(boundaryFct);
@@ -91,7 +90,6 @@ public:
   {
     int size = problemStat->getNumComponents();
     double errMax, errSum;
-    boundaryTime = 0.0;
 
     for (int i = 0; i < size; i++) {
       errSum = Error<double>::L2Err(*boundaryFct,
@@ -157,24 +155,12 @@ public:
     return &theta1; 
   }
 
-  /// Returns pointer to \ref tau1
-  double *getTau1Ptr() 
-  { 
-    return &tau1; 
-  }
-
   /// Returns pointer to \ref rhsTime.
-  double *getRHSTimePtr() 
+  double *getRhsTimePtr() 
   { 
     return &rhsTime; 
   }
 
-  /// Returns pointer to \ref theta1.
-  double *getBoundaryTimePtr() 
-  { 
-    return &boundaryTime; 
-  }
-
   /// Returns \ref boundaryFct;
   AbstractFunction<double, WorldVector<double> > *getBoundaryFct() 
   {
@@ -188,15 +174,9 @@ protected:
   /// theta - 1
   double theta1;
 
-  /// 1.0 / timestep
-  double tau1;
-
   /// time for right hand side functions.
   double rhsTime;
 
-  /// time for boundary functions.
-  double boundaryTime;
-
   /// Pointer to boundary function. Needed for initial problem.
   AbstractFunction<double, WorldVector<double> > *boundaryFct;
 };
@@ -237,22 +217,14 @@ int main(int argc, char** argv)
 				vecheat,
 				adaptInfoInitial);
 
-  double fac = *(vecheat.getThetaPtr()) != 0.0 ? 1.0 : 1.0e-3;
-  int nRefine = 0;
-  int dim = vecheatSpace.getMesh(0)->getDim();
-  GET_PARAMETER(0, vecheatSpace.getMesh(0)->getName() 
-		+ "->global refinements", "%d", &nRefine);
-  if (*(vecheat.getThetaPtr()) == 0.5)
-    *(adaptInfo.getTimestepPtr()) *= fac * pow(2.0, static_cast<double>(-nRefine) / dim);
-  else
-    *(adaptInfo.getTimestepPtr()) *= fac * pow(2.0, -nRefine);
   
-
   // ===== create rhs functions =====
   F *rhsFct0 = new F(vecheatSpace.getFeSpace(0)->getBasisFcts()->getDegree());
-  rhsFct0->setTimePtr(vecheat.getRHSTimePtr());
+  rhsFct0->setTimePtr(vecheat.getRhsTimePtr());
+
   F *rhsFct1 = new F(vecheatSpace.getFeSpace(1)->getBasisFcts()->getDegree());
-  rhsFct1->setTimePtr(vecheat.getRHSTimePtr());
+  rhsFct1->setTimePtr(vecheat.getRhsTimePtr());
+
 
   // ===== create operators =====
   double one = 1.0;
@@ -282,17 +254,17 @@ int main(int argc, char** argv)
   C00.addZeroOrderTerm(new Simple_ZOT);
   C00.setUhOld(vecheat.getOldSolution()->getDOFVector(0));
   vecheatSpace.addMatrixOperator(C00, 0, 0, 
-				 vecheat.getTau1Ptr(), vecheat.getTau1Ptr());
-  vecheatSpace.addVectorOperator(C00, 0, vecheat.getTau1Ptr(), vecheat.getTau1Ptr());
+				 vecheat.getInvTau(), vecheat.getInvTau());
+  vecheatSpace.addVectorOperator(C00, 0, vecheat.getInvTau(), vecheat.getInvTau());
   
   
   Operator C11(vecheatSpace.getFeSpace(1), vecheatSpace.getFeSpace(1));
   C11.addZeroOrderTerm(new Simple_ZOT);
   C11.setUhOld(vecheat.getOldSolution()->getDOFVector(1));
   vecheatSpace.addMatrixOperator(C11, 1, 1, 			    
-				 vecheat.getTau1Ptr(), vecheat.getTau1Ptr());
+				 vecheat.getInvTau(), vecheat.getInvTau());
   vecheatSpace.addVectorOperator(C11, 1,			    
-				 vecheat.getTau1Ptr(), vecheat.getTau1Ptr());
+				 vecheat.getInvTau(), vecheat.getInvTau());
 
   // create RHS operator
   Operator F0(vecheatSpace.getFeSpace(0));
@@ -303,13 +275,15 @@ int main(int argc, char** argv)
   F1.addZeroOrderTerm(new CoordsAtQP_ZOT(rhsFct1));
   vecheatSpace.addVectorOperator(F1, 1);
 
+
   // ===== create boundary functions =====
   G *boundaryFct = new G;
-  boundaryFct->setTimePtr(vecheat.getBoundaryTimePtr());
+  boundaryFct->setTimePtr(vecheat.getTime());
   vecheat.setBoundaryFct(boundaryFct);
 
-  vecheatSpace.addDirichletBC(DIRICHLET, 0, 0, boundaryFct);
-  vecheatSpace.addDirichletBC(DIRICHLET, 1, 1, boundaryFct);
+  vecheatSpace.addDirichletBC(1, 0, 0, boundaryFct);
+  vecheatSpace.addDirichletBC(1, 1, 1, boundaryFct);
+
 
   // ===== start adaption loop =====
   int errorCode = adaptInstat.adapt();
diff --git a/doc/tutorial/heat.tex b/doc/tutorial/heat.tex
index cac2cb35734fa6502bbe694d418dae19ff5755de..b7ef5118642d4db8a8a7a27855c8f7250b962c09 100644
--- a/doc/tutorial/heat.tex
+++ b/doc/tutorial/heat.tex
@@ -218,7 +218,7 @@ Now, we define some getting functions and the private member variables:
 \begin{lstlisting}{}
   double *getThetaPtr() { return &theta; };
   double *getTheta1Ptr() { return &theta1; };
-  double *getRHSTimePtr() { return &rhsTime; };
+  double *getRhsTimePtr() { return &rhsTime; };
 
 private:
   double theta;
@@ -281,7 +281,7 @@ The object \verb+heatSpace+ is handed as
 as \verb+ProblemTimeInterface+ (implemented by class
 \verb+ProblemInstatScal+).
 
-The functions $f$ and $g$ are declared in the following way:
+The function $g$ is declared in the following way:
 \begin{lstlisting}{}
   // ===== create boundary functions =====
   G *boundaryFct = new G;
@@ -343,18 +343,11 @@ error estimation. The inverse of the current timestep is returned by
 the function \verb+getInvTau()+, which is a member of the class
 \verb+ProblemInstat+.
 
-Finally, the operator for the right hand side function $f$ is added
-and the adaptation loop is started:
-
 \begin{lstlisting}{}
   // create RHS operator
   Operator F(heatSpace.getFeSpace());
   F.addZeroOrderTerm(new CoordsAtQP_ZOT(rhsFct));
   heatSpace.addVectorOperator(F);
-
-  // ===== start adaption loop =====
-  int errorCode = adaptInstat.adapt();
-}
 \end{lstlisting}
 
 \verb+CoordsAtQP_ZOT+ is a zero order term that evaluates a given
@@ -364,6 +357,23 @@ side, just $fct(x, t)$. Note that the old solution isn't given to the
 operator here. Otherwise the term would represent $fct(x, t) \cdot
 u^{old}$ on the right hand side.
 
+Finally, the function $g$ is created. This function is used for both,
+as the exact solution in the initial problem and as the Dirichlet
+boundary function. To the last, the adaption loop is started:
+\begin{lstlisting}{}
+  // ===== create boundary functions =====
+  G *boundaryFct = new G;
+  boundaryFct->setTimePtr(heat.getTime());
+  heat.setExactSolution(boundaryFct);
+  heatSpace.addDirichletBC(1, boundaryFct);
+
+  // ===== start adaption loop =====
+  int errorCode = adaptInstat.adapt();
+}
+\end{lstlisting}
+Note that boundaries must be set after all operators were defined.
+
+
 \subsection{Parameter file}
 \label{s:heat parameter}
 
diff --git a/doc/tutorial/introduction.tex b/doc/tutorial/introduction.tex
index c6e8ae29fddaf22804a8962e233206953e85015b..6de73ab04b1034de32cd87f59b464f65c3e37036 100644
--- a/doc/tutorial/introduction.tex
+++ b/doc/tutorial/introduction.tex
@@ -26,9 +26,8 @@ are described:\begin{itemize}
   refinements.
 \item {\bf Output}: The AMDiS results are written to output files that
   contain the final mesh and the problem solution on this mesh. The
-  output can be visualized by proper tools ({\it CrystalClear,
-    ParaView, TecPlot}). In the output section, the visualized problem
-  results are shown and discussed.
+  output can be visualized with {\it ParaView}. In the output section,
+  the visualized problem results are shown and discussed.
 \end{itemize}
 To avoid unnecessary repetitions, not every aspect of every example is
 described, but only those aspects that have not appeared in previous
diff --git a/doc/tutorial/tutorial.pdf b/doc/tutorial/tutorial.pdf
index 5590fcc562874b813585f67d244f3f09f233b972..3fa0a9c2990bd457d5f2afa242ce031fef647b0c 100644
Binary files a/doc/tutorial/tutorial.pdf and b/doc/tutorial/tutorial.pdf differ