From 94eb4f4aa3ae09f052ad08b1c2f37c2d9ab86553 Mon Sep 17 00:00:00 2001
From: Jorrit Fahlke <joe@dune-project.org>
Date: Tue, 8 Dec 2009 12:42:37 +0000
Subject: [PATCH] scrap outdated branch

[[Imported from SVN: r5756]]
---
 .gitignore                                |   21 -
 COPYING                                   |  360 -----
 INSTALL                                   |   94 --
 Makefile.am                               |   18 -
 README                                    |   71 -
 README.SVN                                |   28 -
 TODO                                      |    5 -
 am/.gitignore                             |    3 -
 am/Makefile.am                            |   10 -
 am/checklog                               |  122 --
 am/doxygen                                |  107 --
 am/global-rules                           |   16 -
 am/headercheck                            |   76 --
 am/inkscape.am                            |    4 -
 am/latex                                  |   24 -
 am/no-check-without-lib                   |   27 -
 am/sourcescheck                           |   53 -
 am/top-rules                              |   17 -
 am/webstuff                               |   34 -
 bin/.gitignore                            |    7 -
 bin/Makefile.am                           |   11 -
 bin/addsourcescheck                       |   39 -
 bin/check-log-store.in                    |   47 -
 bin/dune-autogen                          |  148 --
 bin/dunecontrol                           |  741 ----------
 bin/dunemodules.inc                       |  522 --------
 bin/duneproject                           |  652 ---------
 bin/mpi-config                            |  184 ---
 bin/test-version-compare                  |  134 --
 bin/xfail-compile-tests                   |    3 -
 common/.gitignore                         |    8 -
 common/Makefile.am                        |   36 -
 common/alignment.hh                       |  117 --
 common/array.hh                           |  140 --
 common/arraylist.hh                       |  725 ----------
 common/bartonnackmanifcheck.hh            |   50 -
 common/bigunsignedint.hh                  |  607 ---------
 common/binaryfunctions.hh                 |   32 -
 common/bitsetvector.hh                    |  596 ---------
 common/collectivecommunication.hh         |  212 ---
 common/configparser.cc                    |  322 -----
 common/configparser.hh                    |  239 ----
 common/debugstream.hh                     |  436 ------
 common/deprecated.hh                      |   10 -
 common/enumset.hh                         |  148 --
 common/exceptions.hh                      |  206 ---
 common/exprtmpl.cc                        |    6 -
 common/exprtmpl.hh                        | 1111 ---------------
 common/exprtmpl/.gitignore                |    2 -
 common/exprtmpl/Makefile.am               |    7 -
 common/exprtmpl/exprexpr.inc              |  136 --
 common/exprtmpl/norm.inc                  |   74 -
 common/exprtmpl/scalar.inc                |  185 ---
 common/fassign.hh                         |  278 ----
 common/finitestack.hh                     |   84 --
 common/fixedarray.hh                      |   13 -
 common/float_cmp.cc                       |  482 -------
 common/float_cmp.hh                       |  370 -----
 common/fmatrix.hh                         | 1488 ---------------------
 common/fmatrixev.hh                       |  184 ---
 common/fvector.hh                         | 1080 ---------------
 common/gcd.hh                             |   77 --
 common/genericiterator.hh                 |  279 ----
 common/geometrytype.hh                    |  194 ---
 common/helpertemplates.hh                 |   48 -
 common/interfaces.hh                      |   64 -
 common/iteratorfacades.hh                 |  713 ----------
 common/lcm.hh                             |   41 -
 common/lru.hh                             |  219 ---
 common/misc.hh                            |  135 --
 common/modules                            |   14 -
 common/mpicollectivecommunication.hh      |  333 -----
 common/mpihelper.hh                       |  241 ----
 common/nullptr.hh                         |   31 -
 common/poolallocator.hh                   |  581 --------
 common/precision.hh                       |   75 --
 common/propertymap.hh                     |  336 -----
 common/singleton.hh                       |  121 --
 common/sllist.hh                          |  811 -----------
 common/smallobject.hh                     |  111 --
 common/smartpointer.hh                    |  177 ---
 common/static_assert.hh                   |  109 --
 common/stdstreams.cc                      |   45 -
 common/stdstreams.hh                      |  172 ---
 common/test/.gitignore                    |   48 -
 common/test/Makefile.am                   |  138 --
 common/test/arraylisttest.cc              |  204 ---
 common/test/bigunsignedinttest.cc         |   86 --
 common/test/bitsetvectortest.cc           |  159 ---
 common/test/conversiontest.cc             |   12 -
 common/test/deprtuplestest.cc             |  259 ----
 common/test/exprtmpl.cc                   |  333 -----
 common/test/float_cmp.cc                  |  154 ---
 common/test/fmatrixtest.cc                |  291 ----
 common/test/fvectortest.cc                |  107 --
 common/test/gcdlcmtest.cc                 |   30 -
 common/test/iteratorfacadetest.cc         |   60 -
 common/test/iteratorfacadetest.hh         |   50 -
 common/test/iteratortest.hh               |  297 ----
 common/test/lrutest.cc                    |   42 -
 common/test/mpicollectivecommunication.cc |   57 -
 common/test/mpihelpertest.cc              |   28 -
 common/test/nullptr-test.cc               |   37 -
 common/test/nullptr-test2.cc              |    7 -
 common/test/parsetest.cc                  |   47 -
 common/test/poolallocatortest.cc          |  137 --
 common/test/settest.cc                    |   16 -
 common/test/singletontest.cc              |  100 --
 common/test/sllisttest.cc                 |  444 ------
 common/test/smallobject.cc                |   84 --
 common/test/smartpointertest.cc           |   55 -
 common/test/static_assert_test.cc         |   13 -
 common/test/streamtest.cc                 |   56 -
 common/test/test-stack.cc                 |   70 -
 common/test/testfassign.cc                |   72 -
 common/test/testfassign2.cc               |    6 -
 common/test/timing.cc                     |  140 --
 common/test/tuplestest.cc                 |  259 ----
 common/test/utilitytest.cc                |   92 --
 common/timer.hh                           |   92 --
 common/tuples.hh                          | 1100 ---------------
 common/typetraits.hh                      |  340 -----
 common/utility.hh                         |  505 -------
 common/version.hh                         |   32 -
 configure.ac                              |   45 -
 doc/.gitignore                            |    5 -
 doc/.wmlrc                                |    3 -
 doc/Makefile.am                           |   46 -
 doc/buildsystem/.gitignore                |   13 -
 doc/buildsystem/Makefile.am               |   36 -
 doc/buildsystem/buildsystem.tex           | 1089 ---------------
 doc/devel/.gitignore                      |    4 -
 doc/devel/Makefile.am                     |   31 -
 doc/devel/codingstyle.wml                 |   88 --
 doc/devel/features.wml                    |   89 --
 doc/devel/portability.wml                 |   93 --
 doc/devel/tests.wml                       |   57 -
 doc/doxygen/.gitignore                    |   13 -
 doc/doxygen/Doxyfile.in                   | 1239 -----------------
 doc/doxygen/Makefile.am                   |   33 -
 doc/doxygen/bestpractice.wml              |   60 -
 doc/doxygen/mainpage                      |   17 -
 doc/doxygen/modules                       |    3 -
 doc/example.opts                          |    4 -
 doc/installation-notes-bluegenep.wml      |   67 -
 doc/installation-notes.wml                |  194 ---
 doc/layout/.gitignore                     |    3 -
 doc/layout/Makefile.am                    |    8 -
 doc/layout/default.wml                    |   21 -
 doc/layout/header.wml                     |   11 -
 doc/layout/navigation.wml                 |    0
 doc/view-concept.wml                      |   78 --
 dune-common.pc.in                         |   15 -
 dune.module                               |    3 -
 lib/.gitignore                            |    4 -
 lib/Makefile.am                           |   10 -
 m4/.gitignore                             |    3 -
 m4/Makefile.am                            |   19 -
 m4/TODO                                   |    7 -
 m4/acx_blas.m4                            |  153 ---
 m4/acx_lapack.m4                          |   95 --
 m4/acx_mpi.m4                             |  108 --
 m4/acx_pthread.m4                         |  235 ----
 m4/ax_check_gl.m4                         |   95 --
 m4/ax_lang_compiler_ms.m4                 |   23 -
 m4/dune.m4                                |  335 -----
 m4/dune_all.m4                            |   85 --
 m4/dune_autobuild.m4                      |   25 -
 m4/dune_common.m4                         |   97 --
 m4/dune_compiler.m4                       |   58 -
 m4/dune_deprecated.m4                     |   26 -
 m4/dune_docu.m4                           |   22 -
 m4/dune_exprtmpl.m4                       |   11 -
 m4/dune_griddim.m4                        |   62 -
 m4/dune_linkcxx.m4                        |   35 -
 m4/dune_mpi.m4                            |  186 ---
 m4/dune_streams.m4                        |   44 -
 m4/f5.m4                                  |   80 --
 m4/fortran_overwrite.m4                   |   93 --
 m4/grape.m4                               |  101 --
 m4/hdf5.m4                                |   84 --
 m4/immdx_lib_metis.m4                     |  127 --
 m4/inkscape.m4                            |    9 -
 m4/mpi-config.m4                          |  301 -----
 m4/opengl.m4                              |   21 -
 m4/pardiso.m4                             |   53 -
 m4/parmetis.m4                            |  150 ---
 m4/static_assert.m4                       |   57 -
 m4/superlu-dist.m4                        |  205 ---
 m4/superlu.m4                             |  198 ---
 m4/update_from_autoconf_archive           |   13 -
 m4/xdr.m4                                 |    8 -
 192 files changed, 30554 deletions(-)
 delete mode 100644 .gitignore
 delete mode 100644 COPYING
 delete mode 100644 INSTALL
 delete mode 100644 Makefile.am
 delete mode 100644 README
 delete mode 100644 README.SVN
 delete mode 100644 TODO
 delete mode 100644 am/.gitignore
 delete mode 100644 am/Makefile.am
 delete mode 100644 am/checklog
 delete mode 100644 am/doxygen
 delete mode 100644 am/global-rules
 delete mode 100644 am/headercheck
 delete mode 100644 am/inkscape.am
 delete mode 100644 am/latex
 delete mode 100644 am/no-check-without-lib
 delete mode 100644 am/sourcescheck
 delete mode 100644 am/top-rules
 delete mode 100644 am/webstuff
 delete mode 100644 bin/.gitignore
 delete mode 100644 bin/Makefile.am
 delete mode 100755 bin/addsourcescheck
 delete mode 100755 bin/check-log-store.in
 delete mode 100755 bin/dune-autogen
 delete mode 100755 bin/dunecontrol
 delete mode 100644 bin/dunemodules.inc
 delete mode 100755 bin/duneproject
 delete mode 100755 bin/mpi-config
 delete mode 100755 bin/test-version-compare
 delete mode 100755 bin/xfail-compile-tests
 delete mode 100644 common/.gitignore
 delete mode 100644 common/Makefile.am
 delete mode 100644 common/alignment.hh
 delete mode 100644 common/array.hh
 delete mode 100644 common/arraylist.hh
 delete mode 100644 common/bartonnackmanifcheck.hh
 delete mode 100644 common/bigunsignedint.hh
 delete mode 100644 common/binaryfunctions.hh
 delete mode 100644 common/bitsetvector.hh
 delete mode 100644 common/collectivecommunication.hh
 delete mode 100644 common/configparser.cc
 delete mode 100644 common/configparser.hh
 delete mode 100644 common/debugstream.hh
 delete mode 100644 common/deprecated.hh
 delete mode 100644 common/enumset.hh
 delete mode 100644 common/exceptions.hh
 delete mode 100644 common/exprtmpl.cc
 delete mode 100644 common/exprtmpl.hh
 delete mode 100644 common/exprtmpl/.gitignore
 delete mode 100644 common/exprtmpl/Makefile.am
 delete mode 100644 common/exprtmpl/exprexpr.inc
 delete mode 100644 common/exprtmpl/norm.inc
 delete mode 100644 common/exprtmpl/scalar.inc
 delete mode 100644 common/fassign.hh
 delete mode 100644 common/finitestack.hh
 delete mode 100644 common/fixedarray.hh
 delete mode 100644 common/float_cmp.cc
 delete mode 100644 common/float_cmp.hh
 delete mode 100644 common/fmatrix.hh
 delete mode 100644 common/fmatrixev.hh
 delete mode 100644 common/fvector.hh
 delete mode 100644 common/gcd.hh
 delete mode 100644 common/genericiterator.hh
 delete mode 100644 common/geometrytype.hh
 delete mode 100644 common/helpertemplates.hh
 delete mode 100644 common/interfaces.hh
 delete mode 100644 common/iteratorfacades.hh
 delete mode 100644 common/lcm.hh
 delete mode 100644 common/lru.hh
 delete mode 100644 common/misc.hh
 delete mode 100644 common/modules
 delete mode 100644 common/mpicollectivecommunication.hh
 delete mode 100644 common/mpihelper.hh
 delete mode 100644 common/nullptr.hh
 delete mode 100644 common/poolallocator.hh
 delete mode 100644 common/precision.hh
 delete mode 100644 common/propertymap.hh
 delete mode 100644 common/singleton.hh
 delete mode 100644 common/sllist.hh
 delete mode 100644 common/smallobject.hh
 delete mode 100644 common/smartpointer.hh
 delete mode 100644 common/static_assert.hh
 delete mode 100644 common/stdstreams.cc
 delete mode 100644 common/stdstreams.hh
 delete mode 100644 common/test/.gitignore
 delete mode 100644 common/test/Makefile.am
 delete mode 100644 common/test/arraylisttest.cc
 delete mode 100644 common/test/bigunsignedinttest.cc
 delete mode 100644 common/test/bitsetvectortest.cc
 delete mode 100644 common/test/conversiontest.cc
 delete mode 100644 common/test/deprtuplestest.cc
 delete mode 100644 common/test/exprtmpl.cc
 delete mode 100644 common/test/float_cmp.cc
 delete mode 100644 common/test/fmatrixtest.cc
 delete mode 100644 common/test/fvectortest.cc
 delete mode 100644 common/test/gcdlcmtest.cc
 delete mode 100644 common/test/iteratorfacadetest.cc
 delete mode 100644 common/test/iteratorfacadetest.hh
 delete mode 100644 common/test/iteratortest.hh
 delete mode 100644 common/test/lrutest.cc
 delete mode 100644 common/test/mpicollectivecommunication.cc
 delete mode 100644 common/test/mpihelpertest.cc
 delete mode 100644 common/test/nullptr-test.cc
 delete mode 100644 common/test/nullptr-test2.cc
 delete mode 100644 common/test/parsetest.cc
 delete mode 100644 common/test/poolallocatortest.cc
 delete mode 100644 common/test/settest.cc
 delete mode 100644 common/test/singletontest.cc
 delete mode 100644 common/test/sllisttest.cc
 delete mode 100644 common/test/smallobject.cc
 delete mode 100644 common/test/smartpointertest.cc
 delete mode 100644 common/test/static_assert_test.cc
 delete mode 100644 common/test/streamtest.cc
 delete mode 100644 common/test/test-stack.cc
 delete mode 100644 common/test/testfassign.cc
 delete mode 100644 common/test/testfassign2.cc
 delete mode 100644 common/test/timing.cc
 delete mode 100644 common/test/tuplestest.cc
 delete mode 100644 common/test/utilitytest.cc
 delete mode 100644 common/timer.hh
 delete mode 100644 common/tuples.hh
 delete mode 100644 common/typetraits.hh
 delete mode 100644 common/utility.hh
 delete mode 100644 common/version.hh
 delete mode 100644 configure.ac
 delete mode 100644 doc/.gitignore
 delete mode 100644 doc/.wmlrc
 delete mode 100644 doc/Makefile.am
 delete mode 100644 doc/buildsystem/.gitignore
 delete mode 100644 doc/buildsystem/Makefile.am
 delete mode 100644 doc/buildsystem/buildsystem.tex
 delete mode 100644 doc/devel/.gitignore
 delete mode 100644 doc/devel/Makefile.am
 delete mode 100644 doc/devel/codingstyle.wml
 delete mode 100644 doc/devel/features.wml
 delete mode 100644 doc/devel/portability.wml
 delete mode 100644 doc/devel/tests.wml
 delete mode 100644 doc/doxygen/.gitignore
 delete mode 100644 doc/doxygen/Doxyfile.in
 delete mode 100644 doc/doxygen/Makefile.am
 delete mode 100644 doc/doxygen/bestpractice.wml
 delete mode 100644 doc/doxygen/mainpage
 delete mode 100644 doc/doxygen/modules
 delete mode 100644 doc/example.opts
 delete mode 100644 doc/installation-notes-bluegenep.wml
 delete mode 100644 doc/installation-notes.wml
 delete mode 100644 doc/layout/.gitignore
 delete mode 100644 doc/layout/Makefile.am
 delete mode 100644 doc/layout/default.wml
 delete mode 100644 doc/layout/header.wml
 delete mode 100644 doc/layout/navigation.wml
 delete mode 100644 doc/view-concept.wml
 delete mode 100644 dune-common.pc.in
 delete mode 100644 dune.module
 delete mode 100644 lib/.gitignore
 delete mode 100644 lib/Makefile.am
 delete mode 100644 m4/.gitignore
 delete mode 100644 m4/Makefile.am
 delete mode 100644 m4/TODO
 delete mode 100644 m4/acx_blas.m4
 delete mode 100644 m4/acx_lapack.m4
 delete mode 100644 m4/acx_mpi.m4
 delete mode 100644 m4/acx_pthread.m4
 delete mode 100644 m4/ax_check_gl.m4
 delete mode 100644 m4/ax_lang_compiler_ms.m4
 delete mode 100644 m4/dune.m4
 delete mode 100644 m4/dune_all.m4
 delete mode 100644 m4/dune_autobuild.m4
 delete mode 100644 m4/dune_common.m4
 delete mode 100644 m4/dune_compiler.m4
 delete mode 100644 m4/dune_deprecated.m4
 delete mode 100644 m4/dune_docu.m4
 delete mode 100644 m4/dune_exprtmpl.m4
 delete mode 100644 m4/dune_griddim.m4
 delete mode 100644 m4/dune_linkcxx.m4
 delete mode 100644 m4/dune_mpi.m4
 delete mode 100644 m4/dune_streams.m4
 delete mode 100644 m4/f5.m4
 delete mode 100644 m4/fortran_overwrite.m4
 delete mode 100644 m4/grape.m4
 delete mode 100644 m4/hdf5.m4
 delete mode 100644 m4/immdx_lib_metis.m4
 delete mode 100644 m4/inkscape.m4
 delete mode 100644 m4/mpi-config.m4
 delete mode 100644 m4/opengl.m4
 delete mode 100644 m4/pardiso.m4
 delete mode 100644 m4/parmetis.m4
 delete mode 100644 m4/static_assert.m4
 delete mode 100644 m4/superlu-dist.m4
 delete mode 100644 m4/superlu.m4
 delete mode 100755 m4/update_from_autoconf_archive
 delete mode 100644 m4/xdr.m4

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 1c0f19f15..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,21 +0,0 @@
-Makefile
-Makefile.in
-config.*
-configure
-aclocal.m4
-autom4te.cache
-depcomp
-install-sh
-missing
-mkinstalldirs
-libtool
-dune-common.pc
-semantic.cache
-configure.lineno
-stamp-h1
-dune-common-*.tar.gz
-dune-common-?.?
-ltmain.sh
-dune
-.libs
-dependencies.m4
diff --git a/COPYING b/COPYING
deleted file mode 100644
index 80603f82a..000000000
--- a/COPYING
+++ /dev/null
@@ -1,360 +0,0 @@
-The DUNE library and headers are licensed under version 2 of the GNU
-General Public License (see below), with a special exception for
-linking and compiling against DUNE, the so-called "runtime exception."
-The license is intended to be similiar to the GNU Lesser General
-Public License, which by itself isn't suitable for a template library.
-
-The exact wording of the exception reads as follows:
-
-   As a special exception, you may use the DUNE source files as part
-   of a software library or application without restriction.
-   Specifically, if other files instantiate templates or use macros or
-   inline functions from one or more of the DUNE source files, or you
-   compile one or more of the DUNE source files and link them with
-   other files to produce an executable, this does not by itself cause
-   the resulting executable to be covered by the GNU General Public
-   License.  This exception does not however invalidate any other
-   reasons why the executable file might be covered by the GNU General
-   Public License.
-
-
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 141f9725c..000000000
--- a/INSTALL
+++ /dev/null
@@ -1,94 +0,0 @@
-Installation Instructions
-=========================
-
-For a full explanation of the DUNE installation process please read
-the installation notes [0]. The following introduction is meant for
-the impatient.
-
-Getting started
----------------
-
-Suppose you have downloaded all DUNE modules of interest to your
-computer and extracted then in one common directory. See [1] for a
-list of available modules.
-
-To compile the modules Dune has to check several components of
-your system and whether prerequisites within the modules are met. For
-the ease of users we have designed a custom build system on top of the
-automake tools. Run
-
-  ./dune-common/bin/dunecontrol all
-
-to commence those tests and build all modules you have
-downloaded. Don't worry about messages telling you that libraries are
-missing: they are only needed for grid-self-checks we need for
-developing.
-
-You can customize the build to your specific needs by using an options file
-(see below)
-
-  ./dune-common/bin/dunecontrol --opts=/path_to/file.opts
-
-If you did not tell dunecontrol to install with an options file you
-need to run
-
-  ./dune-common/bin/dunecontrol make install
-
-to install Dune (you may need root-permissions for the install
-part depending on the prefix set)
-
-A more comprehensive introduction to the build system can be found in [2].
-
-Passing options to the build process
-------------------------------------
-
-Using the dunecontrol script the following atomic commands can be
-executed:
-
-- autogen (runs autogen in each module, only needed when downloaded
-  via svn)
-- configure (runs the configure tests for each module
-- exec (executes a command in each module directory)
-- make (runs make for each module)
-- update (updates the svn version)
-
-The composite command all simply runs autogen, configure and make for
-each module.
-
-As it is often not convenient (and for the target all impossible) to
-specify the options for each command as parameters after the call, one
-can pass the options via file specified by the --opts=<file>
-option. For each atomic command one specify the options via a ine
-
-<COMMANY_UPPERCASE>_FLAGS=<flags> # e.g.: MAKE_FLAGS=install
-
-The available options for make and svn are the natural ones. The
-configure commands available can be found by issuing
-
-dunecontrol --only=dune-common configure --help
-
-and for autogen by
-
-dunecontrol --only=dune-common autogen --help
-
-(In the svn version this has to be calles after running autogen.)
-
-
-An example of an options file is
-
-  # use a special compiler (g++ version 3.4) and install to a custom
-  # directory, default is /usr/local/bin
-  CONFIGURE_FLAGS="CXX=g++-3.4 --prefix='/tmp/Hu Hu'"
-  # Set the default target of make to install. Now the call above will
-  # not just build the DUNE modules but also install it
-   MAKE_FLAGS=install
-  # The default versions of automake and autogen are not sufficient
-  # therefore we need to specify what versions to use
-  AUTOGEN_FLAGS="--ac=2.59 --am=1.9
-
-Links
------
-
-0. http://www.dune-project.org/doc/installation-notes.html
-1. http://www.dune-project.org/download.html
-2. http://dune-project.org/doc/buildsystem/buildsystem.pdf
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index b7c8deb73..000000000
--- a/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-# $Id$
-
-# we need the module file to be able to build via dunecontrol
-EXTRA_DIST=dune.module
-
-# don't follow the full GNU-standard
-# need automake >= 1.5
-AUTOMAKE_OPTIONS = foreign 1.5
-
-SUBDIRS = common lib doc bin m4 am
-
-sourcescheck_NOSOURCES=aclocal.m4  dependencies.m4
-
-# use configured compiler for "make distcheck"
-DISTCHECK_CONFIGURE_FLAGS = CXX="$(CXX)" CC="$(CC)" --enable-parallel=@ENABLE_PARALLEL@ MPICC="$(MPICC)"
-
-include $(top_srcdir)/am/top-rules
-include $(top_srcdir)/am/global-rules
diff --git a/README b/README
deleted file mode 100644
index 96a0cfd22..000000000
--- a/README
+++ /dev/null
@@ -1,71 +0,0 @@
-DUNE-library
-============
-
-DUNE, the Distributed and Unified Numerics Environment is a modular toolbox
-for solving partial differential equations with grid-based methods.
-
-The main intention is to create slim interfaces allowing an efficient use of
-legacy and/or new libraries. Using C++ techniques DUNE allows to use very
-different implementation of the same concept (i.e. grid, solver, ...) under
-a common interface with a very low overhead.
-
-DUNE was designed with flexibility in mind. It supports easy discretization
-using methods, like Finite Elements, Finite Volume and also Finite
-Differences. Through separation of data structures DUNE allows fast Linear
-Algebra like provided in the ISTL module, or usage of external libraries
-like blas.
-
-This package contains the basic DUNE common classes.
-
-Dependencies
-------------
-
-dune-common depends on the following software packages
-
-- pkg-config
-- icc (C/C++) >= 7.0 or GNU C, C++ >=3.4
-
-The following software is recommend but optional:
-
-- MPI (either OpenMPI, lam, or mpich suffice)
-
-For a full explanation of the DUNE installation process please read
-the installation notes [0]. The following introduction is meant for
-the impatient.
-
-License
--------
-
-The DUNE-library and headers are licensed under version 2 of the GNU
-General Public License, with the so-called "runtime exception", as
-follows:
-
-   As a special exception, you may use the DUNE source files as part
-   of a software library or application without restriction.
-   Specifically, if other files instantiate templates or use macros or
-   inline functions from one or more of the DUNE source files, or you
-   compile one or more of the DUNE source files and link them with
-   other files to produce an executable, this does not by itself cause
-   the resulting executable to be covered by the GNU General Public
-   License.  This exception does not however invalidate any other
-   reasons why the executable file might be covered by the GNU General
-   Public License.
-
-This licence clones the one of the libstc++ library. For further
-implications of this library please see their licence page [3]
-
-See the file COPYING for full copying permissions.
-
-Installation
-------------
-
-Short installation instructions can be found in file INSTALL. For the
-full instructions please see [0].
-
-Links
------
-
-0. http://www.dune-project.org/doc/installation-notes.html
-1. http://www.dune-project.org/download.html
-2. http://dune-project.org/doc/buildsystem/buildsystem.pdf
-3. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html
diff --git a/README.SVN b/README.SVN
deleted file mode 100644
index 3d5c82031..000000000
--- a/README.SVN
+++ /dev/null
@@ -1,28 +0,0 @@
-Preparing the SVN-sources
-=========================
-
-Additional to the software mentioned in README you'll need the
-following programs installed on your system:
-
-  automake >= 1.5
-
-  autoconf >= 2.50
-
-  libtool
-
-For the documentation to build you'll need doxygen, wml, convert and latex
-installed.
-
-Dune also features a self-test. As some grid-components (e.g. Albert,
-UG) depend on external libraries their self-tests will only run if
-those libraries are found. The pathes would then need to be passed via
---with-...= parameters.
-
-Important!  If you don't want to develop Dune itself you won't need to
-provide external components! The Dune-library and -headers are
-independent of other libraries, instead the applications can choose
-what parts to use.
-
-$Id$
-
-
diff --git a/TODO b/TODO
deleted file mode 100644
index ff6bc7d7a..000000000
--- a/TODO
+++ /dev/null
@@ -1,5 +0,0 @@
-- nach perl und makedepend suchen (für undefAllMacros.pl)
-- doxygen configuration files
-- Installation doku in docs
-- operator schnittstelle erweitern, damit man mehr Informationen
-  übergeben kann
diff --git a/am/.gitignore b/am/.gitignore
deleted file mode 100644
index 55880268f..000000000
--- a/am/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile
-Makefile.in
-semantic.cache
\ No newline at end of file
diff --git a/am/Makefile.am b/am/Makefile.am
deleted file mode 100644
index d8b3968ef..000000000
--- a/am/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-# $Id$
-
-EXTRA_DIST = inkscape.am webstuff global-rules sourcescheck \
-	no-check-without-lib latex checklog doxygen top-rules \
-    headercheck
-
-amdir = $(datadir)/dune-common/am
-am_DATA = $(EXTRA_DIST)
-
-include $(top_srcdir)/am/global-rules
diff --git a/am/checklog b/am/checklog
deleted file mode 100644
index b3217d1ea..000000000
--- a/am/checklog
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- Makefile -*-
-# $Id$
-
-LOG_FILE = $(top_srcdir)/check-log.log
-LOG_DIR = $(top_srcdir)/check-log
-LOG_STORE = $(SHELL) $(DUNE_COMMON_ROOT)/bin/check-log-store $(LOG_FILE) $(LOG_DIR)
-LOG_SET_OPTIONS = \
-	path=`test "$(subdir)" = "." && \
-	echo "/@PACKAGE_NAME@" || echo "/@PACKAGE_NAME@/$(subdir)"`; \
-	ppath=`dirname $$path`; \
-	dir=`basename $$path`
-
-$(DUNE_COMMON_ROOT)/bin/check-log-store: $(DUNE_COMMON_ROOT)/bin/check-log-store.in
-	cd $(DUNE_COMMON_ROOT)/bin/ && $(MAKE) check-log-store
-
-check-log: $(DUNE_COMMON_ROOT)/bin/check-log-store
-check-log:
-	rm -f $(LOG_FILE)
-
-check-log: check-log-libs
-check-log: check-log-build
-check-log: check-log-test
-check-log: check-log-sources
-check-log: check-log-dir
-
-check-log-libs: check-log-libs-recursive
-check-log-build: check-log-build-recursive
-check-log-test: check-log-test-recursive
-check-log-sources: check-log-sources-recursive
-check-log-dir: check-log-dir-recursive
-
-check-log-sources-am:
-	$(LOG_SET_OPTIONS); \
-	$(MAKE) sourcescheck-am > $(LOG_FILE) 2>&1; \
-	$(LOG_STORE) "sources" "Makefile.am" "$$path"
-
-check-log-libs-am:
-	$(LOG_SET_OPTIONS); \
-	for lib in $(LTLIBRARIES); do \
-	  $(MAKE) $$lib > $(LOG_FILE) 2>&1; \
-	  $(LOG_STORE) "lib" "$$lib" "$$path"; \
-	done;
-
-check-log-build-am:
-	$(LOG_SET_OPTIONS); \
-	for target in $(check_PROGRAMS) $(PROGRAMS); do \
-	  $(MAKE) $$target > $(LOG_FILE) 2>&1; \
-	  $(LOG_STORE) "build" "$$target" "$$path"; \
-	done;
-
-check-log-test-am:
-	@LOG () { \
-	  echo "$$1" > $(LOG_FILE).2; \
-	  cat $(LOG_FILE) >> $(LOG_FILE).2; \
-	  mv $(LOG_FILE).2 $(LOG_FILE); \
-	}; \
-	$(LOG_SET_OPTIONS); \
-	for tst in $(TESTS); do \
-	  if test -f ./$$tst; then dir=./; \
-	  elif test -f $$tst; then dir=; \
-	  else dir="$(srcdir)/"; fi; \
-	  if $(TESTS_ENVIRONMENT) $${dir}$$tst > $(LOG_FILE) 2>&1; then \
-	    case " $(XFAIL_TESTS) " in \
-	    *" $$tst "*) \
-	      LOG "ERROR: XPASS ($$tst)"; \
-		  $(LOG_STORE) "run" "$$tst" "$$path" 1 0; \
-	    ;; \
-	    *) \
-	      LOG "SUCCESS: PASS ($$tst)"; \
-		  $(LOG_STORE) "run" "$$tst" "$$path" 0 0; \
-	    ;; \
-	    esac; \
-	  elif test $$? -ne 77; then \
-	    case " $(XFAIL_TESTS) " in \
-	    *" $$tst "*) \
-	      LOG "SUCCESS: XFAIL ($$tst)"; \
-		  $(LOG_STORE) "run" "$$tst" "$$path" 0 0; \
-	    ;; \
-	    *) \
-	      LOG "ERROR: FAIL ($$tst)"; \
-		  $(LOG_STORE) "run" "$$tst" "$$path" 1 0; \
-	    ;; \
-	    esac; \
-	  else \
-	    LOG "WARNING: SKIP ($$tst)"; \
-		$(LOG_STORE) "run" "$$tst" "$$path" 0 1; \
-	  fi; \
-	done;
-
-check-log-dir-am:
-	$(LOG_SET_OPTIONS); \
-	$(LOG_STORE) "dir" "$$dir" "$$ppath"
-
-check-log-libs-recursive \
-check-log-build-recursive \
-check-log-test-recursive \
-check-log-sources-recursive \
-check-log-dir-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-.PHONY: check-log \
-	check-log-lib check-log-lib-am check-log-lib-recursive \
-	check-log-build check-log-build-am check-log-build-recursive \
-	check-log-test check-log-test-am check-log-test-recursive \
-	check-log-sources check-log-sources-am check-log-sources-recursive \
-	check-log-dir check-log-dir-am check-log-dir-recursive
diff --git a/am/doxygen b/am/doxygen
deleted file mode 100644
index 7ef6d2acf..000000000
--- a/am/doxygen
+++ /dev/null
@@ -1,107 +0,0 @@
-# -*-makefile-automake-*-
-
-if BUILD_DOCS
-  DOXYGENTAG = doxygen-tag 
-  DOXYGEN_HTML = html 
-  # EXTRAINSTALL in the html subdirectory
-  DOXYGENHTMLFILES = *.html *.css *.png *.gif
-  DOXYGENDISTFILES = doxygen-tag
-  DOXYGENINSTALL = $(DOXYGENHTMLFILES) ../doxygen.log
-endif
-
-DISTCLEANFILES = doxygen.log doxygen-tag
-
-if DUNEWEB
-if WML
-  DUNEWEBDOXY = @DUNEWEBDIR@/doc/doxygen
-  # themeing doxygen
-  DOXYGENHEADER = doxy-header.html
-  DOXYGENFOOTER = doxy-footer.html
-  DOXYGENSTYLESHEET = dune-doxy.css
-
-doxy-header.html: BASEDIR=../../..
-doxy-footer.html: BASEDIR=../../..
-doxy-header.html: WMLOPTS=
-doxy-footer.html: WMLOPTS=
-
-doxy-header.html: @DUNEWEBDIR@/doc/doxygen/doxy-header.wml
-	$(WMLCMD) -I @DUNEWEBDIR@/doc/doxygen/ @DUNEWEBDIR@/doc/doxygen/doxy-header.wml -o $(abs_builddir)/doxy-header.html
-
-doxy-footer.html: @DUNEWEBDIR@/doc/doxygen/doxy-footer.wml
-	$(WMLCMD) -I @DUNEWEBDIR@/doc/doxygen/ @DUNEWEBDIR@/doc/doxygen/doxy-footer.wml -o $(abs_builddir)/doxy-footer.html
-
-endif
-endif
-
-DOXYGENFILES = $(DOXYGEN_HTML) $(DOXYGENHEADER) $(DOXYGENFOOTER)
-
-#we need this in the distribution
-if BUILD_DOCS
-
-install-doxygen-data: $(DOXYGEN_HTML)
-	$(mkinstalldirs) $(DESTDIR)/$(doxygendir); \
-	dir=$(srcdir); \
-	if test -d ./html; then dir=.; fi; echo "dir=$$dir"; \
-	list='$(DOXYGENHTMLFILES)'; \
-	for p in $$list; do \
-		$(install_sh_DATA) $$dir/html/$$p $(DESTDIR)/$(doxygendir); \
-	done
-
-uninstall-doxygen-data:
-	list='$(DOXYGENHTMLFILES)'; \
-	for p in $$list; do \
-	  rm -f $(DESTDIR)/$(doxygendir)/$$p; \
-	done
-
-install-data-local: install-doxygen-data
-uninstall-local: uninstall-doxygen-data
-
-endif
-
-# what files does the doxygen-generated stuff depend on (find-syntax)
-DOXYGEN_DEPENDON = -name \*.cc -o -name \*.hh -o -name \*.png -o -name Doxyfile -o -name modules
-
-# check dependency ourself to be robust
-doxygen-tag: FORCE Doxyfile $(DOXYGENHEADER) $(DOXYGENFOOTER)
-	set -e; \
-	  if test ! -e doxygen-tag || test x"`find $(top_srcdir) \( $(DOXYGEN_DEPENDON) \) -a -cnewer doxygen-tag -print`" != x ; then \
-	    echo Running doxygen. This may take a while... ; \
-	    $(DOXYGEN) $(srcdir)/Doxyfile > doxygen.log 2>&1 <&- ; \
-	    touch doxygen-tag ; \
-	fi
-if DUNEWEB
-	$(DUNEWEBDOXY)/update-doxygen.css $(abs_builddir)/html
-endif
-
-doxygen-dist-install: doxygen-tag
-	mkdir $(distdir)/html
-	pushd $(srcdir)/html; \
-	for i in $(DOXYGENHTMLFILES); do \
-	  cp $$i $(distdir)/html; done; popd
-
-dist-hook: doxygen-dist-install
-
-html: doxygen-tag
-
-if WML
-# how to install the doxygen documentation
-web-install-doxygen:
-	if test -d $(DUNEWEBDIR) && test -r $(DUNEWEBDIR)/Make.global ; then \
-	  pushd html; \
-	    $(MAKE) -f $(DUNEWEBDIR)/Make.global \
-          EXTRAINSTALL="$(DOXYGENINSTALL)" CURDIR="$(CURDIR)/@DUNE_MOD_NAME@-html" install ; \
-	  popd; \
-	fi
-endif
-
-web-install: web-install-doxygen web-install-default
-
-clean-local: clean-doxygen
-
-clean-doxygen:
-	rm -rf $(DOXYGENTAG) $(DOXYGENFILES) *~
-
-# nice trick from the GNU make infopage to force a rule to run
-FORCE:
-
-include $(top_srcdir)/am/webstuff
diff --git a/am/global-rules b/am/global-rules
deleted file mode 100644
index af01c5bd3..000000000
--- a/am/global-rules
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- Makefile -*-
-# $Id$
-
-#
-# this file should be included into any Makefile.am so that we can
-# easily introduce new global rules. DO NOT OVERUSE!
-#
-
-# add "sourcescheck"-target testing if all source files are mentioned
-include $(top_srcdir)/am/sourcescheck
-
-# check consistency of the headers (see FS#394)
-include $(top_srcdir)/am/headercheck
-
-# add "check-log"-target to create automated build logs
-include $(top_srcdir)/am/checklog
diff --git a/am/headercheck b/am/headercheck
deleted file mode 100644
index 4bb03570c..000000000
--- a/am/headercheck
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- Makefile -*-
-# $Id: sourcescheck 5183 2008-04-27 17:37:08Z christi $
-
-headercheck_PATTERN = *.hh
-headercheck_IGNORE =
-
-hctest.o: hctest.cc
-	$(CXX) -I$(top_srcdir) \
-	  $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) \
-	  $(MPI_CPPFLAGS) $(ALL_PKG_CPPFLAGS) -c -o $@ $<
-
-headercheck:
-	@if test x"$$HEADER" = "x"; then \
-          if test x"$$SILENT" = "x"; then \
-            SILENTSTR='SILENT=1' ; \
-          fi ; \
-	  $(MAKE) $$SILENTSTR $(AM_MAKEFLAGS) headercheck-recursive; \
-	else \
-          if test x"$$SILENT" = "x"; then \
-            SILENTSTR='SILENT=0' ; \
-          fi ; \
-	  $(MAKE) $$SILENTSTR $(AM_MAKEFLAGS) headercheck-am; \
-	fi
-
-headercheck-am:
-	@if test x"$$HEADER" != "x"; then \
-	  list="$$HEADER"; \
-	else \
-	  list=`echo $(headercheck_PATTERN)`; \
-	fi; \
-	test "$$list" != "$(headercheck_PATTERN)" || exit 0; \
-	for f in $$list; do \
-	  HEADER="$(subdir)/$$f"; \
-	  test $$SILENT -ne 0 || echo "checking $$HEADER"; \
-	  CCFILE=hctest.cc; \
-	  OFILE=hctest.o; \
-	  LOGFILE=hctest.log; \
-	  rm -f $$CCFILE; \
-	  test -n "$$NO_CONFIG_H" || echo "#include <config.h>" > $$CCFILE; \
-	  echo "#include <$${HEADER}>" >> $$CCFILE; \
-	  echo "#include <$${HEADER}>" >> $$CCFILE; \
-	  echo "int main () {}" >> $$CCFILE; \
-	  make $$OFILE > $$LOGFILE 2>&1; \
-	  SUCCESS=$$?; \
-	  if ! (test $$SUCCESS -eq 0 && test -e $$OFILE); then \
-	    echo "Error in $$HEADER"; \
-            test $$SILENT -ne 0 || cat $$LOGFILE; \
-	  fi; \
-	  rm -f $$OFILE; \
-	  rm -f $$CCFILE; \
-	  rm -f $$LOGFILE; \
-	  test $$SUCCESS -eq 0 || exit $$SUCCESS; \
-	done
-
-headercheck-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $(subdir)/$$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-.PHONY: headercheck headercheck-recursive headercheck-am
-
-# vim:set filetype=automake:
diff --git a/am/inkscape.am b/am/inkscape.am
deleted file mode 100644
index 93e39d0d6..000000000
--- a/am/inkscape.am
+++ /dev/null
@@ -1,4 +0,0 @@
-if INKSCAPE
-.svg.png:
-	$(INKSCAPE) -e $@ $<
-endif INKSCAPE
diff --git a/am/latex b/am/latex
deleted file mode 100644
index b01f52fdb..000000000
--- a/am/latex
+++ /dev/null
@@ -1,24 +0,0 @@
-# Rules for latex stuff
-
-# rerun TEX if log-file suggests that
-.tex.dvi:
-	set -e; \
-	TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $*; \
-	while grep Rerun $*.log > /dev/null ; do \
-	  TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
-	done; \
-	if grep '^\\bibdata{' *.aux > /dev/null \
-	   && grep '^\\citation{' *.aux > /dev/null; \
-	then \
-	  BSTINPUTS=.:$(srcdir):${BSTINPUTS}: BIBINPUTS=.:$(srcdir):${BIBINPUTS}: $(BIBTEX) $* || exit $$?; \
-	  TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
-	  while grep Rerun $*.log > /dev/null ; do \
-	    TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
-	  done ; \
-	fi
-
-.dvi.pdf:
-	TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(DVIPDF) $*
-
-.dvi.ps:
-	TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(DVIPS) $* -o
diff --git a/am/no-check-without-lib b/am/no-check-without-lib
deleted file mode 100644
index 4fce88d1b..000000000
--- a/am/no-check-without-lib
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- Makefile -*-
-# $Id$
-
-# many tests need parts of libdune. Telling the tests to use
-# previously build partial libs is possible but difficult to maintain:
-# the SUBDIRS have to be very carefully defined for this to work...
-# Additionally, testing with a partial lib is unrealistic.
-#
-# As users may try to use "make check" without a full build we
-# generate a meaningful error message instead of silently failing on a
-# lib-dependency
-
-# add a new dependency to automake-internal rule
-check-am: libcheck
-
-libcheck: libcheck-FORCE
-	@if test ! -f $(top_builddir)/lib/libdune.la ; then \
-	  echo ; \
-	  echo '   libdune not built, checks will not work yet!' ; \
-	  echo '   Run a full make to fix this' ; \
-	  echo ; \
-	  exit 1; \
-	fi
-
-libcheck-FORCE:
-
-.PHONY: libcheck libcheck-FORCE
diff --git a/am/sourcescheck b/am/sourcescheck
deleted file mode 100644
index db31da903..000000000
--- a/am/sourcescheck
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- Makefile -*-
-# $Id$
-
-sourcescheck_IGNORE = aclocal.m4 dependencies.m4
-
-sourcescheck_LIST = $(SOURCES) $(DIST_SOURCES) $(HEADERS) $(DIST_HEADERS) \
-	$(sourcescheck_NOSOURCES) $(dist_noinst_DATA) $(EXTRA_DIST)
-
-sourcescheck: sourcescheck-recursive
-
-#	@(for f in $(sourcescheck_LIST) fnord; do echo $$f; done) | \
-#	 grep '\.[hc][hc]$$' | sort | uniq > header_CHECK.install
-sourcescheck-am:
-	@echo $(sourcescheck_LIST) | tr ' ' '\n' | \
-	 grep '\.[hcm][hc4]$$' | sort | uniq > header_CHECK.install
-	@ls | \
-	 grep '\.[hcm][hc4]$$' | sort | uniq > header_CHECK.present
-	@RESULT=0; \
-	if diff header_CHECK.* | grep ^[\<\>] -q; then \
-		echo "==== WARNING ===="; \
-	    echo -n "Directory: "; pwd; \
-		echo "Files present but not installed:"; \
-		diff -u header_CHECK.install header_CHECK.present | \
-		grep -v ^+++ | grep ^+; \
-		echo "Files listed for install but not present:"; \
-		diff -u header_CHECK.install header_CHECK.present | \
-		grep -v ^--- | grep ^-; \
-		echo "==== END ===="; \
-		RESULT=1; \
-	fi; \
-	rm -f header_CHECK.install header_CHECK.present; \
-	exit $$RESULT
-
-sourcescheck-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-.PHONY: sourcescheck sourcescheck-recursive sourcescheck-am
diff --git a/am/top-rules b/am/top-rules
deleted file mode 100644
index 7ad4368d8..000000000
--- a/am/top-rules
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*-makefile-*-
-
-ACLOCAL_AMFLAGS=@ACLOCAL_AMFLAGS@
-DUNECONTROL=@DUNE_COMMON_ROOT@/bin/dunecontrol
-
-sourcescheck_NOSOURCES = aclocal.m4 dependencies.m4
-
-all-am: dependencies.m4
-
-@DUNE_MOD_NAME@.m4: dune.module
-	cd $(srcdir) && $(DUNECONTROL) --only=@DUNE_MOD_NAME@ m4create
-
-moduledir = $(libdir)/dunecontrol/@DUNE_MOD_NAME@
-module_DATA = dune.module
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = @DUNE_MOD_NAME@.pc
diff --git a/am/webstuff b/am/webstuff
deleted file mode 100644
index 11ddf6221..000000000
--- a/am/webstuff
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- makefile -*-
-# $Id$
-
-## rules to create HTML-pages from wml-files with additional magic to
-## possibly use the layout of the Dune-homepage
-
-# if DUNEWEBDIR is set to the dune-web directory the layout and
-# install-stuff from that place will be used
-
-# CURDIR should be defined in the same way as in dune-web
-
-if DUNEWEB
-WMLCMD = cd $(DUNEWEBDIR) && @WML@ --nocd -DROOT=$(BASEDIR)
-else
-WMLCMD = @WML@
-endif
-
-if WML
-.wml.html:
-	$(WMLCMD) -I $(abs_srcdir) $(abs_builddir)/$< -o $(abs_builddir)/$@
-endif
-
-if DUNEWEB
-web-install-default: all
-	if test -d $(DUNEWEBDIR) && test -r $(DUNEWEBDIR)/Make.global ; then \
-	  for DIR in $(SUBDIRS) ; do \
-	    $(MAKE) -C $$DIR web-install || exit 1; \
-	  done ; \
-	  $(MAKE) -f $(DUNEWEBDIR)/Make.global \
-            EXTRAINSTALL="$(EXTRAINSTALL)" CURDIR="$(CURDIR)" install ; \
-	fi
-endif
-
-web-install: web-install-default
diff --git a/bin/.gitignore b/bin/.gitignore
deleted file mode 100644
index 7c78bf9ea..000000000
--- a/bin/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-Makefile.in
-.deps
-semantic.cache
-check-log-store
-
-*.swp
diff --git a/bin/Makefile.am b/bin/Makefile.am
deleted file mode 100644
index 5c3f2b765..000000000
--- a/bin/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-
-# put scripts into dist-tarball
-EXTRA_DIST = duneproject dunecontrol \
-  dunemodules.inc mpi-config dune-autogen \
-  xfail-compile-tests
-
-# ... and install some
-bin_SCRIPTS = duneproject dunemodules.inc dunecontrol mpi-config dune-autogen
-
-include $(top_srcdir)/am/global-rules
diff --git a/bin/addsourcescheck b/bin/addsourcescheck
deleted file mode 100755
index 1acab8ce1..000000000
--- a/bin/addsourcescheck
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-
-#
-# patch the include statement into all Makefile.am files
-#
-
-set -e
-
-# always start in $top_srcdir
-if ! test -f configure.ac; then
-  echo "Wrong Directory"
-  echo "run from \$top_srcdir"
-  exit 1
-fi
-
-# list of files to patch
-FILES=`find . -name Makefile.am`
-# snippet to patch into Makefile.am
-SNIP='include $(top_srcdir)/am/sourcescheck'
-# create the grep regexp from the snip
-REGEXP="^$(echo $SNIP | sed -e 's/[\$\/\(\)]/./g')\$"
-# enable / disable verbose mode
-VERBOSE=0
-
-for f in $FILES; do
-	# only patch files that don't have the patch yet
-	if ! grep -q "$REGEXP" $f; then
-		echo patching $f
-		# normalize end of file
-		while test "$(tail -1 $f)" != ""; do
-			echo >> $f
-		done
-		echo $SNIP >> $f
-	else
-		if test x$VERBOSE = x1; then
-		    echo $f already patched
-		fi
-	fi
-done
diff --git a/bin/check-log-store.in b/bin/check-log-store.in
deleted file mode 100755
index 4aea421cc..000000000
--- a/bin/check-log-store.in
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh
-
-set -e
-
-# DB format
-#
-# <tag> <revision> <host> <mode> <module> <path> <errors> <warnings> <log>
-
-# parameter:
-# $(LOG_FILE) $(LOG_DIR) "build" "$$target" "$$path"
-
-host="@hostid@"
-tag="@tag@"
-revision="@revision@"
-
-logfile="$1"
-logdir="$2"
-mode="$3"
-module="$4"
-path="$5"
-errors="$6"
-warnings="$7"
-
-test -d $logdir || mkdir $logdir
-
-storelog=`tempfile -d $logdir`
-
-trap "rm -f $storelog" EXIT
-
-if true; then
-	echo "TAG: $tag"
-	echo "REVISION: $revision"
-	echo "HOST: $host"
-	echo "MODE: $mode"
-	echo "MODULE: $module"
-	echo "PATH: $path"
-	if test "x$errors" != x; then
-		echo "ERRORS: $errors"
-	fi
-	if test "x$warnings" != x; then
-		echo "WARNINGS: $warnings"
-	fi
-	echo "LOG:"
-	cat $logfile
-fi > $storelog
-
-trap - EXIT
diff --git a/bin/dune-autogen b/bin/dune-autogen
deleted file mode 100755
index cfa30c802..000000000
--- a/bin/dune-autogen
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/bash
-# $Id: autogen.sh 5054 2008-01-08 15:06:55Z christi $
-
-# barf on errors
-set -e
-
-usage () {
-    echo "Usage: dune-autogen DUNE_MODULE_PATH_LIST [options]"
-    echo "  --ac=, --acversion=VERSION   use a specific VERSION of autoconf"
-    echo "  --am=, --amversion=VERSION   use a specific VERSION of automake"
-    echo "  -h,    --help                you already found this :-)"
-}
-
-## get my name...
-grep '^Module:' dune.module >/dev/null || echo "Parser Error: Module entry missing in dune.module"
-name=
-while read head name rest
-do case "$head" in
-   Module:) break;;
-   Module:*) name="${head#Module:}"; break;;
-   esac
-   name=
-done <dune.module
-
-## dune-all.m4
-rm -f dune-all.m4
-rm -f $name.m4
-
-# add current dir to PATH
-PATH=`dirname $0`:$PATH
-
-# guess libtool prefix
-if test -n "$LIBTOOLIZE"; then
-    LIBTOOL_prefix=`dirname \`dirname $LIBTOOLIZE\``
-    PATH=$LIBTOOL_prefix:$PATH
-    ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $LIBTOOL_prefix/share/aclocal"
-fi
-
-for OPT in "$@"; do
-    set +e
-    # stolen from configure...
-    # when no option is set, this returns an error code
-    arg=`expr "x$OPT" : 'x[^=]*=\(.*\)'`
-    set -e
-
-    case "$OPT" in
-	--ac=*|--acversion=*)
-			if test "x$arg" = "x"; then
-				usage; 
-				exit 1;
-			fi
-			ACVERSION=$arg
-			;;
-	--am=*|--amversion=*)
-			if test "x$arg" = "x"; then
-				usage; 
-				exit 1;
-			fi
-			AMVERSION=$arg
-			;;
-	-h|--help) usage ; exit 0 ;;
-	*)
-            if test -d "$OPT/m4"; then
-              ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $OPT/m4"
-            fi
-            if test -f "$OPT/dune-common.pc.in" ; then
-#            if test \( -d "$OPT/am" \) -a ! \( -h "$OPT/am" \) ; then
-              echo "Found am directory $OPT/am"
-              am_dir="$OPT/am"
-            fi
-            if test -d "$OPT/share/aclocal"; then
-              ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $OPT/share/aclocal"
-            fi
-            if test -d "$OPT/share/dune-common/am"; then
-              echo "Found am directory $OPT/share/dune-common/am"
-              am_dir="$OPT/share/dune-common/am"
-            fi
-			      PATH=$OPT/bin:$PATH
-            ;;
-    esac
-done
-
-## report parameters
-if test "x$ACVERSION" != "x"; then
-	echo "Forcing autoconf version «$ACVERSION»"
-	if ! which autoconf$ACVERSION > /dev/null; then
-		echo
-		echo "Error: Could not find autoconf$ACVERSION"
-		echo "       Did you specify a wrong version?"
-		exit 1
-	fi
-fi
-if test "x$AMVERSION" != "x"; then
-	echo "Forcing automake version «$AMVERSION»"
-	if ! which automake$AMVERSION > /dev/null; then
-		echo
-		echo "Error: Could not find automake$AMVERSION"
-		echo "       Did you specify a wrong version?"
-		exit 1
-	fi
-fi
-
-## run autotools
-
-echo "--> libtoolize..."
-# this script won't rewrite the files if they already exist. This is a
-# PITA when you want to upgrade libtool, thus I'm setting --force
-if [ x`type -t glibtoolize` = xfile ]; then
-  LIBTOOLIZE=glibtoolize
-fi
-${LIBTOOLIZE-libtoolize} --force 
-
-# writing privat m4 file
-echo -n "--> "
-dunecontrol --only=$name m4create
-
-# prepare everything
-echo "--> aclocal..."
-rm -f aclocal.m4
-rm -rf autom4te.cache
-aclocal$AMVERSION -I . $ACLOCAL_FLAGS
-
-# create a link to the dune-common am directory
-if [ "$name" != "dune-common" ]; then
-  if [ -n "$am_dir" ] && [ -d $am_dir ]; then
-    echo "--> linking dune-common/am..."
-    rm -f am
-    ln -s $am_dir am
-  else
-    echo
-    echo "Error: Could not find dune-common/am!"
-    usage
-    exit 1
-  fi
-fi
-
-# applications should provide a config.h for now
-echo "--> autoheader..."
-autoheader$ACVERSION
-
-echo "--> automake..."
-automake$AMVERSION -W all --add-missing
-
-echo "--> autoconf..."
-autoconf$ACVERSION
-
-## tell the user what to do next
-echo "Now run ./configure to setup $name"
diff --git a/bin/dunecontrol b/bin/dunecontrol
deleted file mode 100755
index 811053277..000000000
--- a/bin/dunecontrol
+++ /dev/null
@@ -1,741 +0,0 @@
-#!/bin/bash
-
-set -e
-
-###############################################
-###
-### check for environment variables
-###
-
-if test -z $MAKE; then
-  MAKE=make
-fi
-
-###############################################
-###
-### read lib
-###
-
-canonicalname(){
-	if test $# -ne 1; then
-		echo Usage: canonicalname path >&2
-		return 1
-	fi
-	file="`eval echo $1`" # expand ~
-	if test ! -e "$file"; then
-		echo $file: file not found >&2
-		return 1
-	fi
-    # if this is a symlink, then follow the symlink
-	if test -L "$file"; then
-		fdir="`dirname \"$file\"`"
-		flink="`readlink \"$file\"`"
-		if test -e "$flink"; then
-			# these are absolute links, or links in the CWD
-			canonicalname "$flink"
-		else
-			canonicalname "$fdir/$flink"
-		fi
-	else
-        # if this is a file, then remember the filename and
-        # canonicalize the directory name
-		if test -f "$file"; then
-			fdir="`dirname \"$file\"`"
-			fname="`basename \"$file\"`"
-			fdir="`canonicalname \"$fdir\"`"
-			echo "$fdir/$fname"
-		fi
-        # if this is a directory, then create an absolute 
-        # directory name and we are done
-		if test -d "$file"; then
-			(cd "$file"; pwd)
-		fi
-	fi
-}
-
-canonicalpath(){
-  if test $# -ne 1; then
-     echo Usage: canonicalpath path >&2
-     return 1
-  fi
-  dirname `canonicalname "$1"`
-}
-
-checkdebug () {
-  while test $# -gt 0; do
-    if test x$1 = x--debug; then
-      echo yes
-      return
-    fi
-    shift
-  done
-  echo no
-}
-
-DEBUG=`checkdebug $@`
-if test "x$DEBUG" = "xyes"; then
-  set -x
-  set -v
-fi
-
-export COMMAND_DIR="`canonicalpath $0`"
-export RESUME_FILE="$HOME/.dune.resume"
-
-# Read the modules find part
-. "$COMMAND_DIR/dunemodules.inc"
-
-# create PKG_CONFIG_PATH for installed dune modules
-export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`canonicalpath $0`/../lib/pkgconfig"
-
-###############################################
-
-#
-# for each module load the $CONTROL script part and run $command
-#
-# parameters:
-# $1 command to execute
-#
-build_modules() {
-  local command="$1"
-  shift
-  local runcommand=run_$command
-  modules="$@"
-  for module in $modules ; do
-    echo $module
-  done > $RESUME_FILE
-  for module in $modules; do
-    local path=$(eval "echo \$PATH_${module}")
-    eval echo "--- calling $command for \$NAME_${module} ---"
-    if ! (
-      set -e
-      cd "$path"
-	  export module
-      eval_control $runcommand $path/$CONTROL
-    ); then eval echo "--- Failed to build \$NAME_${module} ---"; exit 1; fi
-
-    modules_togo=`cat $RESUME_FILE`
-    for module_togo in $modules_togo ; do
-      if test x$module_togo != x$module ; then
-        echo $module_togo
-      fi
-    done > $RESUME_FILE
-
-    eval echo "--- \$NAME_${module} done ---"
-  done
-}
-
-#
-# load command options from an opts file
-# the name of the opts file is stored in the global variable $DUNE_OPTS_FILE
-#
-# parameters:
-# $1 command
-#
-load_opts() {
-  local command=$1
-  local COMMAND=$(echo $command | tr '[:lower:]' '[:upper:]')
-  CMD_FLAGS="$(eval echo \$${COMMAND}_FLAGS)"
-  local CMD_FLAGS_FROM_FILE=""
-  if test "x$DUNE_OPTS_FILE" != "x"; then
-    CMD_FLAGS_FROM_FILE="$(eval ${COMMAND}_FLAGS=""; . $DUNE_OPTS_FILE; eval echo \$${COMMAND}_FLAGS)"
-  fi
-  if test -n "$CMD_FLAGS_FROM_FILE"; then
-    echo "----- using default flags \$${COMMAND}_FLAGS from $DUNE_OPTS_FILE -----"
-    CMD_FLAGS=$CMD_FLAGS_FROM_FILE
-  elif test -n "$CMD_FLAGS"; then
-    echo "----- using default flags \$${COMMAND}_FLAGS from environment -----"
-  fi
-}
-
-###############################################
-###
-### Commands
-###
-
-# check wheteher the parameter is valid command or not
-is_command() {
-eval '
-case "$1" in
-  '`echo $COMMANDS | sed -e 's/ / | /g'`')
-    return 0
-    ;;
-  *)
-    return 1
-    ;;
-esac'
-}
-
-# list of all dunecontrol commands
-COMMANDS="update autogen configure make all exec status svn"
-
-# help string for the commands
-update_HELP="updated all modules from the repository"
-autogen_HELP="run the autogen.sh script for each module"
-configure_HELP="run configure for each module"
-       # "NOTE: the --with-dune* parameters will be generated by dunecontrol"
-make_HELP="run make for each module"
-all_HELP="\trun 'autogen', 'configure' and 'make' command for each module"
-       # "NOTE: run all for an initial setup"
-exec_HELP="execute an arbitrary command in each module directory"
-status_HELP="show vc status for all modules"
-svn_HELP="\trun svn command for each svn managed module"
-
-#
-# setup command proxies
-# call will be forwarded to run_default_$command
-#
-
-for command in $COMMANDS; do
-  eval "run_$command () { run_default_$command; }"
-done
-
-#
-# default implementations for commands... 
-# these can be overwritten in the $CONTROL files
-#
-
-run_default_exec () { bash -c "eval $CMD_FLAGS"; }
-
-run_default_status () {
-  local verbose=0
-  local update=""
-  for i in $CMD_FLAGS; do
-    if eval test "x$i" = "x-v"; then verbose=1; fi
-    if eval test "x$i" = "x-vv"; then verbose=2; fi
-    if eval test "x$i" = "x-u"; then update="-u"; fi
-  done
-  # is out output connected to a tty?
-  if test -t 1; then
-    blue="\e[1m\e[34m"
-    green="\e[1m\e[32m"
-    red="\e[1m\e[31m"
-    reset="\e[0m\e[0m"
-  fi
-
-  if test $verbose -eq 1; then
-    svn status $update | grep -E "^M|^A|^D|^C|^U"
-  elif test $verbose -eq 2; then
-    svn status $update
-  fi
-
-  name="$(eval echo \$NAME_$module)"
-  changed=$(svn status | grep -E "^M|^A|^D" | wc -l)
-  collisions=$(svn status | grep -E "^C"| wc -l)
-  pending=$(svn status $update | grep -E "^...... \* " | wc -l)
-
-  color=$green
-  text="no changes"
-  if [ $changed -eq 0 ]; then
-	true
-  elif [ $changed -eq 1 ]; then
-	color=$blue;
-    text="1 change"
-  else
-	color=$blue;
-    text="$changed changes"
-  fi
-  if [ $pending -eq 0 ]; then
-	true
-  elif [ $pending -eq 1 ]; then
-	color=$blue;
-    text="$text, 1 update pending"
-  else
-	color=$blue;
-    text="$text, $pending updates pending"
-  fi
-  if [ $collisions -eq 0 ]; then
-	true
-  elif [ $collisions -eq 1 ]; then
-	color=$red
-    text="$text, 1 collision"
-  else
-	color=$red
-    text="$text, $count collisions"
-  fi
-  echo -e "$color[$text]$reset $name"
-}
-
-run_default_update () {
-  if test -d .svn; then
-    svn update
-    return
-  fi
-  if test -d CVS; then
-    cvs update -dP
-    return
-  fi
-  echo "WARNING: $module is not under a known version control system."
-  echo "         We support svn and cvs."
-}
-
-run_default_autogen () {
-  PARAMS="$CMD_FLAGS"
-  local M4_PATH=""
-  if test -f configure.ac && \
-     ( test -d .svn || test -d .git || test -d CVS || test -f stamp-vc ); then
-    for m in $FOUND_MODULES; do
-      path=$(eval "echo \$PATH_$m")
-      MODULE_PATHS="$MODULE_PATHS$path "
-    done
-    if test -f autogen.sh; then
-      eval echo "WARNING: \$NAME_$module contains obsolete autogen.sh," \
-		  >&2
-	  echo "         dune-autogen is used instead." >&2
-    fi
-    eval "$COMMAND_DIR/dune-autogen" "$MODULE_PATHS" "$PARAMS" || exit 1
-  else
-    echo Skipping dune-autogen
-  fi
-}
-
-run_default_configure () {
-  PARAMS="$CMD_FLAGS"
-  if test -x configure; then
-	ACLOCAL_FLAGS="-I ."
-	for m in $FOUND_MODULES; do
-      path=$(eval "echo \$PATH_$m")
-      name=$(eval "echo \$NAME_$m")
-      if test -d "$path/m4"; then
-          ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $path/m4"
-      fi
-      if test -d "$path/share/aclocal"; then
-          ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $path/share/aclocal"
-      fi
-	  PARAMS="$PARAMS \"--with-$name=$path\""
-	done
-	PARAMS="$PARAMS ACLOCAL_AMFLAGS=\"$ACLOCAL_FLAGS\""
-    echo ./configure "$PARAMS"
-    eval ./configure "$PARAMS" || exit 1
-  else
-    if test -f configure.in || test -f configure.ac; then
-      echo "ERROR: configure.[in|ac] found, but configure missing." >&2
-      echo "Did you forget to run autoconf?" >&2
-      echo "Perhaps you didn't update your project to" >&2
-      echo "the latest buildsystem changes (FS#382)." >&2
-      echo "If your project is under version control, please make sure" >&2
-      echo "you have a file stamp-vc in you top_srcdir." >&2
-      exit 1
-    fi
-  fi
-}
-
-run_default_make () {
-  PARAMS="$CMD_FLAGS"
-  echo make "$PARAMS"
-  eval $MAKE "$PARAMS"
-}
-
-run_default_all () {
-  for cmd in autogen configure make; do
-    eval echo "--- calling $cmd for \$NAME_${module} ---"
-    load_opts $cmd
-    run_$cmd
-  done
-}
-
-run_default_svn () {
-  if test -d .svn; then
-	PARAMS="$CMD_FLAGS"
-	eval svn "$PARAMS"
-  fi
-}
-
-###############################################
-###
-### main
-###
-
-onfailure() {
-  echo "Execution of $(basename $0) terminated due to errors!" >&2
-  exit 1
-}
-
-usage () {
-  (
-    echo "Usage: $(basename $0) [OPTIONS] COMMANDS [COMMAND-OPTIONS]"
-    echo ""
-    echo "  Execute COMMANDS for all Dune modules found. All entries in the"
-    echo "  DUNE_CONTROL_PATH variable are scanned recursively for Dune modules."
-	echo "  If DUNE_CONTROL_PATH is empty, the current directory is scanned."
-    echo "  Dependencies are controlled by the $CONTROL files."
-    echo ""
-    echo "OPTIONS:"
-    echo "  -h, --help         show this help"
-    echo "      --debug        enable debug output of this script"
-    echo "      --module=mod   only apply the actions on module mod"
-    echo "                     and all modules it depends on"
-    echo "      --only=mod     only apply the actions on module mod"
-    echo "                     and not the modules it depends on"
-    echo "      --current      only apply the actions on the current module,"
-    echo "                     the one whose source tree we are standing in"
-    echo "      --resume       resume a previous run (only consider the modules"
-    echo "                     not built successfully on the previous run)"
-    echo "      --opts=FILE    load default options from FILE"
-    echo "                     (see dune-common/doc/example.opts)"
-    echo "      --[COMMAND]-opts=opts   set options for COMMAND"
-    echo "                     (this is mainly useful for the all COMMAND)"
-    echo "COMMANDS:"
-    echo "  Colon-separated list of commands. Available commands are:"
-    printf "  \`help'\tguess what :-)\n"
-    printf "  \`print'\tprint the list of modules sorted after their dependencies\n"
-    for i in $COMMANDS; do
-      printf "  \`$i'\t$(eval echo \$${i}_HELP)\n"
-    done
-    printf "  \`export'\trun eval \`dunecontrol export\` to save the list of\n"
-    printf "  \t\tdune.module files to the DUNE_CONTROL_PATH variable\n"
-    echo
-  )  >&2
-}
-
-# create the module list
-create_module_list() {
-  find_modules_in_path
-  if test "x$SEARCH_MODULES" != "x"; then
-	sort_modules $SEARCH_MODULES
-  else
-	sort_modules $MODULES
-  fi
-  if test "x$ONLY" != x; then
-    export MODULES="$ONLY"
-  fi
-}
-
-# print the module list
-print_module_list() {
-  DELIM=$1
-  shift
-  while test -n "$2"; do
-    echo -n "$(eval echo \$NAME_$1)$DELIM"
-    shift
-  done
-  echo -n "$(eval echo \$NAME_$1)"
-}
-
-if test "x$1" = "x"; then
-  usage
-  exit 1
-fi
-
-trap onfailure EXIT
-
-# clear command opts
-#for i in $COMMANDS; do
-#  COMMAND=$(echo $i | tr '[:lower:]' '[:upper:]')
-#  export ${COMMAND}_FLAGS=""
-#done
-
-# clear variables
-export SEARCH_MODULES=""
-export MODULES=""
-export ONLY=""
-
-# parse commandline parameters
-while test $# -gt 0; do
-    # get option
-    option=$1
-
-    # get args
-    set +e
-    # stolen from configure...
-    # when no option is set, this returns an error code
-    arg=`expr "x$option" : 'x[^=]*=\(.*\)'`
-    set -e
-
-    # switch
-    case "$option" in
-    --opts=*)
-      if test "x$arg" = "x"; then
-        usage
-        echo "ERROR: Parameter for --opts is missing"  >&2
-        echo  >&2
-        exit 1;
-      fi
-      DUNE_OPTS_FILE=`canonicalname $arg`
-      if ! test -r "$DUNE_OPTS_FILE"; then
-        usage
-        echo "ERROR: could not read opts file \"$DUNE_OPTS_FILE\""  >&2
-        echo  >&2
-        exit 1;
-      fi
-    ;;
-	--*-opts=*)
-      optcmd=`expr "x$option=" : 'x--\([^-]*\)-opts=.*'`
-      if is_command $optcmd; then
-        COMMAND=`echo $optcmd | tr '[:lower:]' '[:upper:]'`
-        export ${COMMAND}_FLAGS="$arg"
-      else
-        usage
-        echo "ERROR: unknown option \"$option\""  >&2
-        exit 1
-      fi
-    ;;
-    -h|--help) 
-      command=help
-      break
-    ;;
-    -p|--print) 
-      command=print
-      break
-    ;;
-    --module=*)
-      if test "x$arg" = "x"; then
-        usage
-        echo "ERROR: Parameter for --module is missing"  >&2
-        echo  >&2
-        exit 1;
-      fi
-	  for a in `echo $arg | tr ',' ' '`; do
-        export NAME_`fix_variable_name $a`="$a"
-        fix_and_assign MODULE "$a"
-        export SEARCH_MODULES="$SEARCH_MODULES $MODULE"
-      done
-    ;;
-    --only=*)
-      if test "x$arg" = "x"; then
-        usage
-        echo "ERROR: Parameter for --only is missing"  >&2
-        echo  >&2
-        exit 1;
-      fi
-	  for a in `echo $arg | tr ',' ' '`; do
-        export NAME_`fix_variable_name $a`="$a"
-        fix_and_assign MODULE "$a"
-        export SEARCH_MODULES="$SEARCH_MODULES $MODULE"
-        export ONLY="$ONLY $MODULE"
-      done
-	;;
-    --current)
-	  while ! test -f $CONTROL; do
-        cd ..
-	 	if test "$OLDPWD" = "$PWD"; then
-		  echo "You are not inside the source tree of a DUNE module." >&2
-		  exit -1
- 		fi
-	  done;
-	  parse_control $PWD/$CONTROL
-      fix_and_assign MODULE "$module"
-      export SEARCH_MODULES="$SEARCH_MODULES $MODULE"
-      export ONLY="$ONLY $MODULE"
-      export HAVE_${module}=
-    ;;
-    --resume)
-      if test -s $RESUME_FILE ; then
-        RESUME="`cat $RESUME_FILE`"
-        for a in $RESUME ; do
-          export NAME_`fix_variable_name $a`="$a"
-          fix_and_assign MODULE "$a"
-          export SEARCH_MODULES="$SEARCH_MODULES $MODULE"
-          export ONLY="$ONLY $MODULE"
-        done
-      else
-        echo "Error: No previous run to resume. ('$RESUME_FILE' is empty or does not exist)"
-        exit 1
-      fi
-    ;;
-    --debug) true ;; # ignore this option, it is handled right at the beginning
-    --*)
-      usage
-      echo "ERROR: Unknown option \`$option'"  >&2
-      echo  >&2
-	  exit 1
-      ;;
-    *)
-      break
-    ;;
-    esac
-
-    shift
-done
-
-while test $# -gt 0; do
-  # get command
-  command=$1
-  shift
-
-  # get command options
-  CMD_FLAGS=
-  while test $# -gt 0 && test "$1" != ":"; do
-    COMMAND=$(echo $command | tr '[:lower:]' '[:upper:]')
-    # setup paramter list
-    CMD_FLAGS="$CMD_FLAGS \"$1\""
-    shift
-  done
-  if test -z "$CMD_FLAGS"; then
-    load_opts $command
-  else
-    # disable usage of opts file
-    if test "x$DUNE_OPTS_FILE" != "x"; then
-      echo "WARNING: commandline parameters will overwrite setting in opts file \"$DUNE_OPTS_FILE\""
-    fi 
-  fi
-
-  # skip command delimiter
-  if test "$1" = ":"; then shift; fi
-
-  case "$command" in
-    print)
-      create_module_list
-      eval "print_module_list ' ' $MODULES"
-      echo >&2
-      ;;
-    export)
-      create_module_list
-      DUNE_CONTROL_PATH=""
-      for mod in $MODULES; do
-        if test x != x$DUNE_CONTROL_PATH; then
-          export DUNE_CONTROL_PATH="$DUNE_CONTROL_PATH:$(eval echo \$PATH_$mod/dune.module)"
-        else
-          export DUNE_CONTROL_PATH="$(eval echo \$PATH_$mod/dune.module)"
-        fi
-      done
-      echo export DUNE_CONTROL_PATH=$DUNE_CONTROL_PATH
-      ;;
-    m4create)
-      find_modules_in_path
-      mainmod=`echo $SEARCH_MODULES`
-      fname="dependencies.m4"
-      name=`eval echo \\${NAME_$mainmod}`
-      version=`eval echo \\${VERS_$mainmod}`
-      maintainer=`eval echo \\${MAIN_$mainmod}`
-      # get dependencies
-      eval deps=\$DEPS_$module
-      #initially remove leading space
-      deps=`echo "$deps" | sed 's/^ *//'`
-      while test -n "$deps"; do
-        #the end of the name is marked either by space, opening paren
-        #or comma
-        depname="${deps%%[ (,]*}"
-        #remove the name and adjacent whitespace
-        deps=`echo "$deps" | sed 's/^[^ (,]* *//'`
-        #check whether there is a dependency version
-        case "$deps" in
-        '('*) deps="${deps#(}"
-              depver="${deps%%)*}"
-              deps="${deps#*)}"
-              ;;
-        *)    depver=
-              ;;
-        esac
-        #remove any leading whitespace or commas for te next iteration
-        deps=`echo "$deps" | sed 's/^[, ]*//'`
-  
-        requires="$requires $depname $depver "
-      done
-      # ensure a version number
-      if test "x$version" = "x"; then version="0.0"; fi
-      echo "writing $fname"
-      echo "    for $name $version $maintainer"
-      echo "        requires $requires"
-      cat > $fname <<EOF
-m4_define([DUNE_AC_INIT],[
-  AC_INIT([$name], [$version], [$maintainer])
-  AC_SUBST([DUNE_MOD_VERSION], [$version])
-  AC_SUBST([DUNE_MOD_NAME], [$name])
-  AC_SUBST([DUNE_MAINTAINER_NAME], [$maintainer])
-  DUNE_PARSE_MODULE_VERSION([$name], [$version])
-  # don't build shared libs per default, this is way better for debugging...
-  m4_ifdef([LT_INIT],
-    [LT_INIT([disable-shared])],
-    [AC_DEFUN([LT_OUTPUT])])
-  AC_DISABLE_SHARED
-
-  REQUIRES="$requires"
-  AC_SUBST(REQUIRES, [$REQUIRES])
-])
-
-AC_DEFUN([DUNE_CHECK_MOD_DEPENDENCIES], [
-  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PROG_CPP])
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([AC_PROG_CXXCPP])
-  AC_REQUIRE([AC_PROG_LIBTOOL])
-  m4_ifdef([AC_LIBTOOL_LANG_CXX_CONFIG],[AC_LIBTOOL_LANG_CXX_CONFIG])
-EOF
-      ### initialize AM_CONDITIONAL for suggestions that were not found
-      for name in $(eval echo \$SUGS_$mainmod); do
-        mod=$(fix_variable_name $name)
-        MOD=`echo $mod | tr [:lower:] [:upper:]`
-        if test "x$(eval echo \$HAVE_$mod)" = "x"; then
-          cat >> $fname <<EOF
-  ### add a conditional check for $name,
-  # just in case the module is not available at autogen time
-  AM_CONDITIONAL([HAVE_${MOD}], false)
-EOF
-        fi
-      done
-      ### DEPENDENCIES
-      if test "x$SEARCH_MODULES" != "x"; then
-        MODULES=$SEARCH_MODULES
-      fi
-      sort_dependencies $MODULES
-      for mod in $MODULES; do
-        name=`eval echo \\$NAME_$mod`
-        MOD=`echo $mod | tr [:lower:] [:upper:]`
-        cat >> $fname <<EOF
-  ### check dependency $name
-  # invoke checks required by this module
-  AC_REQUIRE([${MOD}_CHECKS])
-  # invoke check for this module
-  AC_REQUIRE([${MOD}_CHECK_MODULE])
-  if test x\$with_$mod = xno; then
-    AC_MSG_ERROR([could not find required module _dune_name])
-  fi
-EOF
-      done
-      ### 
-      sort_suggestions $mainmod
-      for mod in $MODULES; do
-        name=`eval echo \\$NAME_$mod`
-        MOD=`echo $mod | tr [:lower:] [:upper:]`
-        cat >> $fname <<EOF
-  ### check suggestion $name
-  # invoke checks required by this module
-  AC_REQUIRE([${MOD}_CHECKS])
-  # invoke check for this module
-  AC_REQUIRE([${MOD}_CHECK_MODULE])
-  if test x\$with_$mod = xno; then
-    AC_MSG_WARN([could not find suggested module _dune_name])
-  fi
-EOF
-      done
-      ###
-      mod=$mainmod
-      name=`eval echo \\$NAME_$mod`
-      MOD=`echo $mod | tr [:lower:] [:upper:]`
-      cat >> $fname <<EOF
-  ### invoke checks for $name
-  AC_REQUIRE([${MOD}_CHECKS])
-])
-EOF
-    ;;
-    unexport)
-      echo export DUNE_CONTROL_PATH=""
-    ;;
-    help)
-      usage
-    ;;
-    *)
-      if is_command $command; then
-        create_module_list
-        NAMES=""
-        BUILDMODULES=""
-        for mod in $MODULES; do
-          if test "$(eval echo \$INST_$mod)" != "yes"; then
-            NAMES="$NAMES$(eval echo \$NAME_$mod) "
-            BUILDMODULES="$BUILDMODULES$mod "
-          fi
-        done
-        echo "--- going to build $NAMES ---"
-          build_modules "$command" $BUILDMODULES
-        echo "--- done ---"
-      else
-        usage
-        echo "ERROR: unknown command \"$command\""  >&2
-        exit 1
-      fi
-    ;;
-  esac
-done
-
-trap - EXIT
diff --git a/bin/dunemodules.inc b/bin/dunemodules.inc
deleted file mode 100644
index 8c7871b0d..000000000
--- a/bin/dunemodules.inc
+++ /dev/null
@@ -1,522 +0,0 @@
-# -*-sh-*-
-
-###############################################
-###
-### Configuration
-###
-
-# name of the "control" files
-CONTROL="dune.module"
-
-###############################################
-###
-### check for environment variables
-###
-
-if test -z $DUNE_CONTROL_PATH; then
-  DUNE_CONTROL_PATH=.
-  for i in /usr/local/lib/dunecontrol/ /usr/lib/dunecontrol/; do
-    if test -d $i; then 
-      DUNE_CONTROL_PATH=$DUNE_CONTROL_PATH:$i
-    fi
-  done
-fi
-if test -z $GREP; then
-  GREP=grep
-fi
-# SunOS [e]grep does not seem to comprehend character classes.  Set up
-# some variables to spell them out
-UPPER=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-LOWER=abcdefghijklmnopqrstuvwxyz
-ALPHA="$UPPER$LOWER"
-DIGIT=0123456789
-ALNUM="$ALPHA$DIGIT"
-
-space=" "
-formfeed=""
-newline="
-"
-cr="
-"
-tab="	"
-vtab=""
-# $SPACE will unfortunately not work since grep will not accept an
-# embedded newline.  Instead one can often get away with using $BLANK
-SPACE="$space$formfeed$newline$cr$tab$vtab"
-BLANK="$space$tab"
-
-#
-# read paramters from a $CONTROL file
-#
-# paramters:
-# $1 file to read
-#
-parse_control() {
-  # check file existence
-  if ! test -f "$1"; then
-    echo "ERROR: could not read file $1" >&2
-    exit 1
-  fi
-  # read parameters from control file
-  local name="$(echo $($GREP Module: "$1" | cut -d ':' -f2))"
-  if test "x$name" = "x"; then
-    echo "ERROR: $CONTROL files $1 does not contain a Module entry" >&2
-    exit 1
-  fi
-  # create and check variable name from module name
-  export module_inst=""
-  export module=$(fix_variable_name $name)
-  # read dune.module file
-  local deps="$(echo $($GREP "^[$BLANK]*Depends:" "$1" | cut -d ':' -f2))"
-  local sugs="$(echo $($GREP "^[$BLANK]*Suggests:" "$1" | cut -d ':' -f2))"
-  local vers="$(echo $($GREP "^[$BLANK]*Version:" "$1" | cut -d ':' -f2))"
-  local main="$(echo $($GREP "^[$BLANK]*Maintainer:" "$1" | cut -d ':' -f2))"
-  # guess the path of the dune module:
-  # - installed module: ${path}/lib/dunecontrol/${name}/dune.module
-  #   and there is a file ${path}/lib/pkgconfig/${name}.pc
-  # - source module: ${path}/dune.module
-  #   and there is a file ${path}/${name}.pc.in
-  local path="$(canonicalpath "$1")"
-  if test -f $path/../../../lib/dunecontrol/${name}/dune.module; then
-	  path=$(canonicalname "$path/../../../")
-      export module_inst="true"
-      export INST_${module}=yes
-  else
-      export INST_${module}=no
-  fi
-  if ! check_modname "$module"; then
-    echo "ERROR: $CONTROL files $1 contains an invalid Module entry" >&2
-    exit 1
-  fi
-  # avoid multiple definition of the same module
-  if test "x$(eval echo \$HAVE_$module)" != "x"; then
-    echo "ERROR: multiple definition of module $name" >&2
-    echo "previous defined in:" >&2
-    echo "  $(eval echo \$PATH_$module)/$CONTROL" >&2
-    echo "redefined in:" >&2
-    echo "  $path/$CONTROL" >&2
-    exit 1
-  fi
-  # set status variables
-  export HAVE_${module}=yes
-  export PATH_${module}="$path"
-  export VERS_${module}="$vers"
-  export NAME_${module}="$name"
-  export MAIN_${module}="$main"
-  export DEPS_${module}="$deps"
-  for name in $deps; do
-    mod=$(fix_variable_name $name)
-    export NAME_${mod}="$name"
-  done
-  export SUGS_${module}="$sugs"
-  for name in $sugs; do
-    mod=$(fix_variable_name $name)
-    export NAME_${mod}="$name"
-  done
-}
-
-#
-# search for modules in each directory in DUNE_CONTROL_PATH
-#
-find_modules_in_path() {
-  if test -z "$FOUND_MODULES"; then
-    # foreach dir in $@
-    while read dir; do
-      if test -d "$dir"; then
-        while read m; do
-          test -n "$m" && find_modules "$m"
-        done <<EOFM
-        $(find "$dir" -name $CONTROL | $GREP -v 'dune-[-_a-zA-Z]/dune-[-a-zA-Z_]*-[0-9]\{1,\}.[0-9]\{1,\}/')
-EOFM
-	  else
-        find_modules $dir
-	  fi
-    done <<EOF
-    $(echo $DUNE_CONTROL_PATH | tr ':' '\n') 
-EOF
-    export FOUND_MODULES="$MODULES$INSTMODULES"
-  fi
-}
-
-#
-# search a directory recursively for $CONTROL files
-#
-# paramters:
-# $1 directory to search for modules
-#
-find_modules() {
-  if test -f "$1" && 
-      test "$(basename $1)" = "$CONTROL"; then
-      export module=""
-      export module_inst=""
-      parse_control "$1"
-      if test -n "$module_inst"; then
-        export INSTMODULES="$MODULES$module "
-      else
-        export MODULES="$MODULES$module "
-	  fi
-  else
-      echo "ERROR: '$1' is no $CONTROL file" >&2
-      false
-  fi
-}
-
-#
-# sort $MODULES according to the dependencies
-#
-sort_modules() {
-  # reset list
-  export SORTEDMODULES=""
-  # handle each modules passed as parameter
-  for m in "$@"; do
-    # did we find a module file for this mopdule?
-    if test "x$(eval echo \$HAVE_$m)" != "x"; then
-      _sort_module $m
-    else
-      echo "ERROR: could not find module $(eval echo \$NAME_$m)" >&2
-      exit 1
-    fi
-  done
-  # save result
-  export MODULES="$SORTEDMODULES"
-  # clean up temporary variables
-  for m in $MODULES; do
-    export SORT_DONE_${m}=""
-  done
-}
-
-#
-# sort $MODULES's dependencies according to the dependencies
-# don't include $MODULE itself
-#
-sort_dependencies() {
-  # reset list
-  export SORTEDMODULES=""
-  local deps=""
-  local name=""
-  local dep=""
-  local ver=""
-  local xdeps=""
-  # handle each modules passed as parameter
-  for m in "$@"; do
-    # did we find a module file for this mopdule?
-    if test "x$(eval echo \$HAVE_$m)" != "x"; then
-      eval deps=\$DEPS_$m
-      deps=`echo "$deps" | sed 's/,/ /g;s/([^)]*)/ /g'`
-      for name in $deps; do
-        dep=`fix_variable_name $name`
-        _sort_module $dep
-      done
-    else
-      eval echo ERROR: could not find module \$NAME_$m >&2
-      exit 1
-    fi
-  done
-  # save result
-  export MODULES="$SORTEDMODULES"
-  # clean up temporary variables
-  for m in $MODULES; do
-    export SORT_DONE_${m}=""
-  done
-}
-
-#
-# sort $MODULES's dependencies according to the dependencies
-# don't include $MODULE itself
-#
-sort_suggestions() {
-  # get dependencies
-  sort_dependencies $@
-  export DEPENDENCIES="$SORTEDMODULES"
-  # reset list
-  export SORTEDMODULES=""
-  # handle each modules passed as parameter
-  for m in "$@"; do
-    # did we find a module file for this mopdule?
-    if test "x$(eval echo \$HAVE_$m)" != "x"; then
-	  if test "x$(eval echo \$SUGS_$m)" != "x" ; then
-        for name in $(eval echo \$SUGS_$m); do
-			dep=$(fix_variable_name $name)
-			if test "x$(eval echo \$HAVE_$dep)" != "x"; then
-				_sort_module $dep
-			fi
-        done
-      fi
-    else
-      echo "ERROR: could not find module $(eval echo \$NAME_$m)" >&2
-      exit 1
-    fi
-  done
-  # save result
-  local FOUND=no
-  export MODULES=""
-  for m in $SORTEDMODULES; do
-    FOUND=no
-    for d in $DEPENDENCIES; do
-      if test "x$m" = "x$d"; then
-        FOUND=yes
-      fi
-    done
-    if test "x$FOUND" = "xno"; then
-      export MODULES="$MODULES $m"
-    fi
-  done
-  # clean up temporary variables
-  for m in $MODULES; do
-    export SORT_DONE_${m}=""
-  done
-}
-
-#
-# recursive part of sort_modules
-# evaluate dependencies of one module
-#
-# paramters:
-# $1 name of the modules
-#
-_sort_module() {
-  local module="$1"
-  local modname=""
-  eval modname=\$NAME_$module
-  local deps=""
-  local name=""
-  local dep=""
-  local ver=""
-  local depver=""
-  local xdeps=""
-  shift 1
-  if ! check_modname $module; then 
-    echo "ERROR: invalid module name $module" >&2
-    exit 1
-  fi
-  if test "x$(eval echo \$SORT_DONE_${module})" != "xyes"; then
-    # resolve dependencies
-    eval deps=\$DEPS_$module
-    #initially remove leading space
-    deps=`echo "$deps" | sed 's/^ *//'`
-    while test -n "$deps"; do
-      #the end of the name is marked either by space, opening paren
-      #or comma
-      name="${deps%%[ (,]*}"
-      #remove the name and adjacent whitespace
-      deps=`echo "$deps" | sed 's/^[^ (,]* *//'`
-      #check whether there is a dependency version
-      case "$deps" in
-      '('*) deps="${deps#(}"
-            depver="${deps%%)*}"
-            deps="${deps#*)}"
-            ;;
-      *)    depver=
-            ;;
-      esac
-      #remove any leading whitespace or commas for te next iteration
-      deps=`echo "$deps" | sed 's/^[, ]*//'`
-      dep=$(fix_variable_name $name)
-      if ! check_modname $dep; then 
-        echo "ERROR: invalid module name $name" >&2
-        exit 1
-      fi
-      if test "x$(eval echo \$HAVE_$dep)" != "x"; then
-	    eval ver=\$VERS_$dep
-        if ! check_version "$ver" "$depver"; then
-          echo "ERROR: version mismatch." >&2
-          echo "       $modname requires $name $depver," >&2
-          echo "       but only $name = $ver available." >&2
-          exit 1
-        fi
-        _sort_module $dep
-      else
-        # perhaps this module is installed,
-        # then it should be handled via pkg-config
-        if ! pkg-config $name; then
-          echo "ERROR: could not find module $name," >&2
-          echo "       module is also unknown to pkg-config." >&2
-          echo "       Maybe you need to adjust PKG_CONFIG_PATH!" >&2
-          echo "       $name is required by $modname" >&2
-          exit 1
-        fi
-      fi
-    done
-    # resolve suggestions
-    for name in $(eval "echo \$SUGS_$module"); do
-	  dep=$(fix_variable_name $name)
-      if ! check_modname $dep; then
-        echo "ERROR: invalid module name $name" >&2
-        exit 1
-      fi
-      if test "x$(eval echo \$HAVE_$dep)" != "x"; then
-        _sort_module $dep
-      fi
-    done
-    # insert this module into the list
-    export SORT_DONE_${module}=yes
-    export SORTEDMODULES="$SORTEDMODULES $module"
-  fi
-}
-
-#
-# load the $CONTROL file, skip all control variables
-# and run a command
-#
-# parameters:
-# $1 command to execute
-# $2 full path of the $CONTROL file
-#
-eval_control() {
-  local command="$1"
-  local file="$2"
-  shift 2
-  if test -f "$file"; then
-    # open subshell
-    (
-      set -e
-      # load functions defined in $file
-      # if $command is not defined in $file,
-      # then the default implementation will be executed
-      eval "$($GREP -v "^[$ALNUM]\{1,\}:" $file)"
-      # execute $command
-      $command
-    ) || false
-  else
-    echo "ERROR: could not find $file" >&2
-    exit 1
-  fi
-}
-
-#
-# fix a value such that it is suitable for a variable name and assign it
-#
-# parameters:
-# $1 name of variable
-# $2 value
-#
-fix_variable_name() {
-  # The replacement sequence has to be extended explicitly to the length of
-  # the matching set for SunOS compatibility
-  echo -n "$@" | tr '[:punct:]' '[_*]'
-}
-
-fix_and_assign() {
-  local name="$1"
-  if ! check_modname $name; then
-    echo "ERROR: error in assignment. $name is not a valid variabel name." >&2
-  fi
-  shift 1
-  export $name=$(fix_variable_name $@)
-}
-
-#
-# make sure the module name fits the naming convention
-#
-# parameters:
-# $1 module name
-#
-check_modname() {
-  if sh -c "$ID=huhu" > /dev/null 2>&1; then
-    return 1
-  fi
-#  if ! echo "$1" | $GREP '^[a-zA-Z0-9_]\{1,\}$' >/dev/null; then
-#    return 1
-#  fi
-  return 0
-}
-
-#
-# compare a sub part of the version string
-#
-# parameters:
-# $1 version
-# $2 part
-#
-# parts:
-# 1: major
-# 2: minor
-# 3: revision
-#
-get_sub_version() {
-  #it would be nice to give the part to awk via a "-v FIELD=$2"
-  #command line argument.  Unfortunatly, SunOS does not support this.
-  #Worse, we cannot use awks int() function here, since under SunOS it
-  #will always return 0 for string input.
-  echo $1 | cut -d. -f"$2" | sed 's/[^0-9].*$//;s/^$/0/'
-}
-
-#
-# compare two versions
-#
-# parameters:
-# $1 version1
-# $2 version1
-#
-# return:
-# 0: equal
-# 1: v1 > v2
-# 2: v1 < v2
-#
-compare_versions() {
-  local v1="$1"
-  local v2="$2"
-
-  for i in 1 2 3; do
-    compare_sub_version $v1 $v2 $i || return 0
-  done
-
-  echo "eq"
-}
-
-compare_sub_version() {
-  # compare sub version number
-  local sub1=`get_sub_version $1 $3`
-  local sub2=`get_sub_version $2 $3`
-
-  if test $sub1 -gt $sub2; then
-    echo "gt"
-	return 1
-  fi
-  if test $sub1 -lt $sub2; then
-    echo "lt"
-	return 1
-  fi
-
-  return 0
-}
-
-check_version() {
-  if test -z "$2"; then # if no constraint is given, check_version is true
-    return 0
-  fi
-  local v=$1
-  local PATTERN="^ *\([<>=]*\) *\([0-9.]*\)\(.*\)$"
-  if test x != `echo "$2" | sed -e "s/$PATTERN/x/"`; then
-    echo "ERROR: invalid version constraint $2" >&2
-    exit 1
-  fi
-  local op=`echo "$2" | sed -e "s/$PATTERN/\1/"`
-  local v2=`echo "$2" | sed -e "s/$PATTERN/\2/"`
-  local rest=`echo "$2" | sed -e "s/$PATTERN/\3/" -e 's/ //g'`
-  local result=1
-  
-  local rel=`compare_versions $v $v2`
-
-  case $rel$op in
-  "eq<="|"eq="|"eq>="|\
-  "gt>="|"gt>"|\
-  "lt<="|"lt<")
-    result=0
-	;;
-  esac
-  if test -z "$rest"; then
-    return $result
-  fi
-  PATTERN="\([|&]\{2\}\)\(.*\)$"
-  if test xx != x`echo "$rest" | sed -e "s/$PATTERN/x/"`; then
-    echo "ERROR: invalid version constraint '$rest'" >&2
-    exit 1
-  fi
-  op=`echo "$rest" | sed -e "s/$PATTERN/\1/"`
-  v2=`echo "$rest" | sed -e "s/$PATTERN/\2/"`
-  if eval "test $result -eq 0" $op "check_version \"$v\" \"$v2\""; then
-    return 0
-  fi
-  return 1
-}
diff --git a/bin/duneproject b/bin/duneproject
deleted file mode 100755
index 8b2c576a9..000000000
--- a/bin/duneproject
+++ /dev/null
@@ -1,652 +0,0 @@
-#!/bin/bash
-
-#
-# TODO:
-#
-# * In case of an installed Dune, it should not be necessary to pass the
-#   dune-common dir to autogen.sh.
-# * Check module names entered as dependencies.
-
-set -e
-
-canonicalname(){
-	if test $# -ne 1; then
-		echo Usage: canonicalname path >&2
-		return 1
-	fi
-	file="`eval echo $1`" # expand ~
-	if test ! -e "$file"; then
-		echo $file: file not found >&2
-		return 1
-	fi
-    # if this is a symlink, then follow the symlink
-	if test -L "$file"; then
-		fdir="`dirname \"$file\"`"
-		flink="`readlink \"$file\"`"
-		if test -e "$flink"; then
-			# these are absolute links, or links in the CWD
-			canonicalname "$flink"
-		else
-			canonicalname "$fdir/$flink"
-		fi
-	else
-        # if this is a file, then remember the filename and
-        # canonicalize the directory name
-		if test -f "$file"; then
-			fdir="`dirname \"$file\"`"
-			fname="`basename \"$file\"`"
-			fdir="`canonicalname \"$fdir\"`"
-			echo "$fdir/$fname"
-		fi
-        # if this is a directory, then create an absolute 
-        # directory name and we are done
-		if test -d "$file"; then
-			(cd "$file"; pwd)
-		fi
-	fi
-}
-
-canonicalpath(){
-  if test $# -ne 1; then
-     echo Usage: canonicalpath path >&2
-     return 1
-  fi
-  dirname $(canonicalname "$1")
-}
-
-pkg_config_dependencies(){
-    if test $# -ne 1; then
-	echo Usage: pkg_config_dependencies name >&2
-	return 1
-    fi
-    name="$1"
-    depends="`pkg-config --variable=DEPENDENCIES $name| sed -e 's/,/ /g'`"
-    for pkg in $depends; do
-	depends="$depends `pkg_config_dependencies $pkg`"
-    done
-    echo $depends
-}
-
-modulesexist(){
-  allfound=0
-
-  for dep in $1; do
-      found=0
-      for module in $2; do
-	  if [ "$dep" = "$module" ]; then
-	      found=1
-	      break
-	  fi
-      done
-      if [ "$found" = "0" ]; then
-	  echo "ERROR:">&2
-	  echo "Module with name $dep was not found" >&2
-	  echo "Did you forget to specify it's location" >&2
-	  echo "in the DUNE_CONTROL_PATH variable?">&2
-	  echo >&2
-	  allfound=1
-      fi
-  done
-  return $allfound
-}
-
-make_unique(){
-  if [ "$#" = "1" ]; then
-      # take first word
-      for exclude_word in $1; do
-	  break;
-      done
-      make_unique $exclude_word "$1" 0
-  else
-      local exclude_word="$1"
-      local words="$2"
-      local pos="$3"
-      local length=0
-      local i=0
-      local new_words=""
-      local cur=0
-      for word in $words; do
-	  if [ $i -le $pos ]; then
-	      i=$((i+1))
-	      length=$((length+1))
-	      new_words="$new_words $word"
-	      continue
-	  fi
-	  if [ "$word" != "$exclude_word" ]; then
-	      new_words="$new_words $word"
-	      if [ "$((length-1))" = "$pos" ]; then
-		  next_word="$word"
-	      fi
-	      length=$((length+1))
-	  fi
-      done
-      if [ "$pos" -lt "$length" ]; then
-       # process next word
-	  make_unique "$next_word" "$new_words" $((pos+1))
-      else
-	  export UNIQUE_WORDS="$new_words"
-      fi
-  fi
-}
-       
-echo
-echo == Dune project/module generator ==
-echo
-echo duneproject will assist you in the creation of a new Dune application.
-echo During this process a new directory with the name of your project will be
-echo created. This directory will hold all configuration and Makefiles and a
-echo simple example application.
-echo
-
-################## FIND AVAILABLE MODULES ##################
-
-. $(canonicalpath $0)/dunemodules.inc
-
-# create PKG_CONFIG_PATH for installed dune modules
-export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(canonicalpath $0)/../lib/pkgconfig"
-
-# search for modules, both installed and src modules
-find_modules_in_path
-
-# get the real module names
-MODULES=""
-for i in $FOUND_MODULES; do
-  mod=$(eval echo \$NAME_$i)
-  MODULES="$MODULES$mod "
-done
-
-if [ "$MODULES" = "" ]; then
-  echo "ERROR:">&2
-  echo "  No dune modules were found!">&2
-  echo "  Did you forget to specify the places where ">&2
-  echo "  you installed your modules in the ">&2
-  echo "  DUNE_CONTROL_PATH environment variable">&2
-  echo "  and adjusted the PKG_CONFIG_PATH environment">&2
-  echo "  accordingly?" >&2
-  exit 1;
-fi
-
-################## READ OPTIONS ##################
-
-while [ "$DATACORRECT" != "y" -a "$DATACORRECT" != "Y" ]; do
-  PROJECT=""
-  while [ -z $PROJECT ]; do
-    read -p "1) Name of your new Project? (e.g.: dune-grid): " PROJECT
-    if echo "$MODULES" | grep -q ^$PROJECT$; then
-      read -p "   A module named $PROJECT already exists. Continue anyway? [y/N] " CONT
-      if test x$DELETE = xy -o x$DELETE = xY; then
-        PROJECT=""
-      fi
-    fi
-  done
-  MODULE="$PROJECT"
-
-  DEP_OK=1
-
-  while [ "$DEPOK" != 0 ]; do
-  DEPENDENCIES=""
-  echo "2) Which modules should this module depend on?"
-  echo "   Following modules are found:"
-  echo "   $MODULES"
-#  for i in $MODULES; do echo -n " $i"; done
-#  echo ""
-  while [ -z "$DEPENDENCIES" ]; do
-      read -p "   Enter space separated list: " DEPENDENCIES
-  done
-  set +e
-  modulesexist "$DEPENDENCIES" "$MODULES"
-  DEPOK=$?
-  set -e
-  done
-
-  VERSION=""
-  while [ -z $VERSION ]; do
-    read -p "3) Project/Module version? " VERSION
-  done
-  MAINTAINER=""
-  while [ -z $MAINTAINER ]; do
-    read -p "4) Maintainers email address? " MAINTAINER
-  done
-
-  echo
-  echo "creating Project \"$PROJECT\", version $VERSION "
-  echo "which depends on \"$DEPENDENCIES\""
-  echo "with maintainer \"$MAINTAINER\""
-  read -p "Are these informations correct? [y/N] " DATACORRECT
-done
-
-echo
-echo "A sample code $MODULE.cc is generated in the \"$PROJECT\" directory."
-echo "Look at the README and dune.module files there."
-echo "Now you can run the dunecontrol script which will setup the new module."
-echo "Sometimes you may have to tweak configure.ac a bit."
-
-if test -d $PROJECT; then
-  echo WARNING:
-  echo "A directory with the name $PROJECT already exists."
-  echo "Do you want to continue anyway?"
-  read -p "Type Y to overwrite the old directory, N to abort. [y/N] " DELETE
-  if test x$DELETE != xy -a x$DELETE != xY; then
-    echo Abort...
-    exit 1
-  fi
-  rm -rf "$PROJECT"
-fi
-mkdir "$PROJECT"
-
-################## dune.module ##################
-cat > "$PROJECT/dune.module" <<C_DELIM
-################################
-# Dune module information file #
-################################
-
-#Name of the module
-Module: $MODULE
-Version: $VERSION
-Maintainer: $MAINTAINER
-#depending on 
-Depends: $DEPENDENCIES
-C_DELIM
-
-################## CONFIGURE.AC ##################
-
-## Create the parameters passed to DUNE_CHECK_ALL
-
-# save module list of dunemodules.inc
-save_MODULES=$MODULES
-for name in $DEPENDENCIES; do
-  mod="`fix_variable_name $name`"
-  if test "x$(eval echo \$HAVE_$mod)" != "x"; then
-    # found via dunemodules.inc
-    sort_modules "$mod"
-    for mod in $MODULES; do
-      M_DEPS="$M_DEPS $(eval echo \$NAME_$mod)"
-    done
-    MODULES=$save_MODULES
-  else
-    # found via pkg-config
-    M_DEPS="`pkg_config_dependencies $name` $name"
-  fi
-  for dep in $M_DEPS; do
-      CHECK="$CHECK [$dep]"
-  done
-done
-set +x
-make_unique "$CHECK"
-
-# insert , between modules
-j=0
-for dep in $UNIQUE_WORDS; do
-if [ "$j" = "0" ]; then
-      CHECK="$dep"
-      j=1
-    else
-      CHECK="$CHECK, $dep"
-    fi
-done
-
-echo "------------------------------------------"
-echo "writing initial files:"
-
-# we need the module with _ instead of - to not confuse automake
-fix_and_assign CMODULE $MODULE
-
-################## CONFIGURE.AC ##################
-echo "- $PROJECT/configure.ac"
-cat > "$PROJECT/configure.ac" <<C_DELIM
-# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.50)
-DUNE_AC_INIT # gets module version from dune.module file
-AM_INIT_AUTOMAKE
-AC_CONFIG_SRCDIR([src/$CMODULE.cc])
-AM_CONFIG_HEADER([config.h])
-
-
-# we need no more than the standard DE-stuff
-# this module depends on $DEPENDENCIES
-# this implies checking for $CHECK
-DUNE_CHECK_ALL
-
-# implicitly set the Dune-flags everywhere
-AC_SUBST(AM_CPPFLAGS, \$DUNE_CPPFLAGS)
-AC_SUBST(AM_LDFLAGS, \$DUNE_LDFLAGS)
-LIBS="\$DUNE_LIBS"
-
-AC_CONFIG_FILES([
-  Makefile
-  src/Makefile
-  doc/Makefile
-  doc/doxygen/Makefile
-  m4/Makefile
-  $MODULE.pc
-])
-AC_OUTPUT
-# finally print the summary information
-DUNE_SUMMARY_ALL
-C_DELIM
-
-################## README ##################
-echo "- $PROJECT/README"
-cat > "$PROJECT/README" <<R_DELIM
-Preparing the Sources
-=========================
-
-Additional to the software mentioned in README you'll need the
-following programs installed on your system:
-
-  automake >= 1.5
-
-  autoconf >= 2.50
-
-  libtool
-
-Getting started
----------------
-
-If these preliminaries are met, you should run 
-
-  dunecontrol all
-
-which will find all installed dune modules as well as all dune modules 
-(not installed) which sources reside in a subdirectory of the current 
-directory. Note that if dune is not installed properly you will either
-have to add the directory where the dunecontrol script resides (probably 
-./dune-common/bin) to your path or specify the relative path of the script.
-
-On your project and all uninstalled DUNE source modules found the script 
-will then calls the GNU autoconf/automake to create a ./configure-script 
-and the Makefiles. Afterwards that configure script will be called and the
-modules will be build using make all
-
-Most probably you'll have to provide additional information to dunecontrol 
-(e. g. compilers, configure options) and/or make options. 
-
-The most convenient way is to use options files in this case. The files
-defining three variables:
-
-AUTOGEN_FLAGS    flags passed to autogen
-CONFIGURE_FLAGS  flags passed to configure
-MAKE_FLAGS       flags passed to make
-
-An example options file might look like this:
-
-#use this options to autogen, configure and make if no other options are given
-AUTOGEN_FLAGS="--ac=2.50 --ac=1.8" #Forces automake 2,50 and autoconf 1.8
-CONFIGURE_FLAGS="CXX=g++-3.4 --prefix=/install/path" #force g++-3.4 as compiler
-MAKE_FLAGS=install #Per default run make install instead of simply make
-
-If you save this information into example.opts you can path the opts file to
-dunecontrol via the --opts option, e. g.
-
-  dunecontrol --opts=example.opts all
-
-To get a full list of available configure flags just run
-
-  dunecontrol configure --help
-
-after running at least 
-  dunecontrol autogen
-
-More info
----------
-
-See
-
-     dunecontrol --help
-   
-for further options.
-
-
-The full build-system is described in the dune-common/doc/buildsystem (SVN version) or under share/doc/dune-common/buildsystem if you installed DUNE!
-
-\$Id$
-
-R_DELIM
-
-################## MAKEFILE.AM ##################
-DISTCHECK_CONFIGURE_FLAGS=
-for name in $DEPENDENCIES; do
-  capital=`echo $name | tr '[a-z-]' '[A-Z_]'`
-  DISTCHECK_CONFIGURE_FLAGS=$DISTCHECK_CONFIGURE_FLAGS"--with-${name}=\$(${capital}_ROOT) "
-done
-echo "- $PROJECT/Makefile.am"
-cat> "$PROJECT/Makefile.am" << M_DELIM
-# \$Id$
-
-# we need the module file to be able to build via dunecontrol
-EXTRA_DIST=dune.module
-
-DIST_SUBDIRS = doc src m4
-
-SUBDIRS = src m4
-
-if BUILD_DOCS
-# TODO: set up documentation tree automatically
-#SUBDIRS += doc
-endif
-
-# don't follow the full GNU-standard
-# we need automake 1.5
-AUTOMAKE_OPTIONS = foreign 1.5
-
-# pass most important options when "make distcheck" is used
-DISTCHECK_CONFIGURE_FLAGS = $DISTCHECK_CONFIGURE_FLAGS CXX="\$(CXX)" CC="\$(CC)"
-
-include \$(top_srcdir)/am/top-rules
-include \$(top_srcdir)/am/global-rules
-
-M_DELIM
-
-################## STAMP-VC ##################
-echo "- $PROJECT/stamp-vc"
-echo 'A stamp file to signify that this directory comes from a version control system, not an unpacked tarball' > $PROJECT/stamp-vc
-
-################## PROJECT.PC.IN ##################
-echo "- $PROJECT/$MODULE.pc.in"
-cat> "$PROJECT/$MODULE.pc.in" << CC_DELIM
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-CXX=@CXX@
-CC=@CC@
-DEPENDENCIES=@REQUIRES@
-
-Name: @PACKAGE_NAME@
-Version: @VERSION@
-Description: $MODULE module
-URL: http://dune-project.org/
-Requires: ${DEPENDENCIES}
-Libs: -L${libdir}
-Cflags: -I${includedir}
-CC_DELIM
-echo "    Please remember to update your $PROJECT/$MODULE.pc.in,"
-echo "    Description and URL are missing right now."
-
-###############################################################
-################## The source subdirectory ####################
-###############################################################
-
-mkdir "$PROJECT/src"
-
-################## src/MAKEFILE.AM ##################
-
-echo "- $PROJECT/src/Makefile.am"
-cat> "$PROJECT/src/Makefile.am" << M_DELIM
-
-SUBDIRS =
-
-noinst_PROGRAMS = ${CMODULE}
-
-${CMODULE}_SOURCES = $CMODULE.cc
-
-${CMODULE}_CXXFLAGS = \$(MPI_CPPFLAGS) \$(UG_CPPFLAGS) \$(AMIRAMESH_CPPFLAGS) \$(ALBERTA_CPPFLAGS) \$(ALU_CPPFLAGS)
-${CMODULE}_LDADD = \$(MPI_LDFLAGS) \$(ALBERTA_LDFLAGS) \$(ALBERTA_LIBS) \$(ALU_LIBS) \$(AMIRAMESH_LDFLAGS) \$(AMIRAMESH_LIBS) \$(UG_LDFLAGS) \$(UG_LIBS) \$(MPI_LDFLAGS) \$(DUNE_LDFLAGS) \$(DUNE_LIBS)
-
-# don't follow the full GNU-standard
-# we need automake 1.5
-AUTOMAKE_OPTIONS = foreign 1.5
-
-# pass most important options when "make distcheck" is used
-DISTCHECK_CONFIGURE_FLAGS = $DISTCHECK_CONFIGURE_FLAGS CXX="\$(CXX)" CC="\$(CC)"
-
-include \$(top_srcdir)/am/global-rules
-
-M_DELIM
-
-
-
-################## PROJECT.CC ##################
-echo "- $PROJECT/src/$CMODULE.cc"
-cat> "$PROJECT/src/$CMODULE.cc" << CC_DELIM
-#ifdef HAVE_CONFIG_H
-# include "config.h"     
-#endif
-#include <iostream>
-#include"dune/common/mpihelper.hh" // An initializer of MPI
-#include"dune/common/exceptions.hh" // We use exceptions
-
-int main(int argc, char** argv)
-{
-  try{
-    //Maybe initialize Mpi
-    Dune::MPIHelper& helper = Dune::MPIHelper::instance(argc, argv);
-    std::cout << "Hello World! This is ${PROJECT}." << std::endl;
-    if(Dune::MPIHelper::isFake)
-      std::cout<< "This is a sequential program." << std::endl;
-    else
-      std::cout<<"I am rank "<<helper.rank()<<" of "<<helper.size()
-        <<" processes!"<<std::endl;
-    return 0;
-  }
-  catch (Dune::Exception &e){
-    std::cerr << "Dune reported error: " << e << std::endl;
-  }
-  catch (...){
-    std::cerr << "Unknown exception thrown!" << std::endl;
-  }
-}
-CC_DELIM
-
-################## M4/MAKEFILE ####################
-mkdir "$PROJECT/m4"
-echo "- $PROJECT/m4/Makefile.am"
-cat> "$PROJECT/m4/Makefile.am" << CC_DELIM
-M4FILES = $MODULE.m4
-
-aclocaldir = \$(datadir)/aclocal
-aclocal_DATA = \$(M4FILES)
-
-EXTRA_DIST = \$(M4FILES)
-
-include \$(top_srcdir)/am/global-rules
-CC_DELIM
-
-################## M4/PROJECT.M4 ####################
-M4_MODULE=`echo $MODULE | tr '[a-z-]' '[A-Z_]'`
-echo "- $PROJECT/m4/$MODULE.m4"
-cat> "$PROJECT/m4/$MODULE.m4" << CC_DELIM
-# Additional checks needed to build the module
-AC_DEFUN([${M4_MODULE}_CHECKS])
-# Additional checks needed to find the module
-AC_DEFUN([${M4_MODULE}_CHECK_MODULE])
-CC_DELIM
-
-
-################################################################
-################## The headers subdirectory ####################
-################################################################
-
-mkdir "$PROJECT/$PROJECT"
-
-
-###############################################################
-################## The doc subdirectory ####################
-###############################################################
-
-mkdir "$PROJECT/doc"
-
-################## doc/Makefile.am ####################
-echo "- $PROJECT/doc/Makefile.am"
-cat> "$PROJECT/doc/Makefile.am" << CC_DELIM
-
-SUBDIRS = doxygen
-
-CURDIR = doc
-
-BASEDIR = ..
-
-docdir=\$(datadir)/doc/${PROJECT}
-
-include \$(top_srcdir)/am/webstuff
-
-CLEANFILES = \$(PAGES)
-
-if ! BUILD_DOCS
-# add tag to notify that dist has been build without documentation
-dist-hook:
-        echo "# No documentation included in distribution! " > \$(distdir)/\$(DOCUMENTATION_TAG_FILE)
-endif
-
-include \$(top_srcdir)/am/global-rules
-CC_DELIM
-
-###############################################################
-############### The doc/doxygen subdirectory ##################
-###############################################################
-
-mkdir "$PROJECT/doc/doxygen"
-
-
-#################### template Doxyfile ########################
-
-echo "- $PROJECT/doc/doxygen/Doxyfile"
-if [ "x`which doxygen`" == "x" ]; then
-    echo "Doxygen is not installed! Creating empty file $PROJECT/doc/doxygen/Doxyfile"
-    echo "You might want to install doxygen and call "
-    echo "doxygen -g \"$PROJECT/doc/doxygen/Doxyfile\""
-    echo "manually later."
-    echo /dev/null > $PROJECT/doc/doxygen/Doxyfile
-else
-    doxygen -g "$PROJECT/doc/doxygen/Doxyfile" > /dev/null
-fi
-
-################# doc/doxygen/Makefile.am #####################
-
-echo "- $PROJECT/doc/doxygen/Makefile.am"
-cat> "$PROJECT/doc/doxygen/Makefile.am" << CC_DELIM
-
-BASEDIR=../..
-CURDIR=doc/doxygen
-WHAT=
-
-doxygendir = \$(datadir)/doc/$PROJECT/doxygen
-doxygen_DATA = \$(WHAT)
-
-#we need this in the distribution
-EXTRA_DIST = \$(WHAT) \$(DOXYGENDISTFILES)
-
-all: \$(WHAT) \$(DOXYGENFILES)
-
-include \$(top_srcdir)/am/doxygen
-include \$(top_srcdir)/am/global-rules
-
-# file to clean only in svn and not in tarball tree
-SVNCLEANFILES = html \$(WHAT) \$(DOXYGENHEADER)
-
-clean-local:
-	if test "x\$(VPATH)" != "x" && test ! -e \$(srcdir)/doxygen-tag; then \
-	  if test -e \$(top_srcdir)/doc/doxygen/Doxydep; then \
-	    rm -rf \$(SVNCLEANFILES); \
-	  fi; \
-	fi
-
-CC_DELIM
-
-## done
-echo "done."
-echo "------------------------------------------"
-echo "For further details read the Dune Buildsystem-Howto:"
-echo "http://www.dune-project.org/doc/buildsystem/buildsystem.pdf"
-
diff --git a/bin/mpi-config b/bin/mpi-config
deleted file mode 100755
index 64f0ce52e..000000000
--- a/bin/mpi-config
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/bash
-
-set -e
-
-canonicalname(){
-  if test $# -ne 1; then
-     echo Usage: canonicalname path >&2
-     return 1
-  fi
-  name="$1"
-  while test -L "$name"; do
-    if ! test -e "$name"; then
-      echo $name: file not found >&2
-      return 1
-    fi
-    if newname="`readlink $name`"; then
-      name="$newname"
-    else
-      echo "$(dirname $name)/$(basename $name)"
-    fi
-  done
-  echo $name
-}
-
-canonicalpath(){
-  if test $# -ne 1; then
-     echo Usage: canonicalpath path >&2
-     return 1
-  fi
-  (cd $(dirname $(canonicalname $1)) && pwd)
-}
-
-findm4dir() {
-  BINDIR="$(canonicalpath $0)"
-  # source-build
-  M4DIR="$BINDIR/../m4"
-  if test -f "$M4DIR/mpi-config.m4"; then
-    echo "$M4DIR"
-    return
-  fi
-  # installed
-  M4DIR="$BINDIR/../share/aclocal"
-  if test -f "$M4DIR/mpi-config.m4"; then
-    echo "$M4DIR"
-    return
-  fi
-  # downloaded
-  M4DIR="$BINDIR"
-  if test -f "$M4DIR/mpi-config.m4"; then
-    echo "$M4DIR"
-    return
-  fi
-  echo "ERROR: could not find mpi-config.m4! Incomplete installation?" >&2
-  exit 1
-}
-
-version=0.1
-verbose=0
-
-usage()
-{
-  cat <<EOF
-Usage: mpi-config [OPTIONS] [LIBRARIES]
-Options:
- [--mpicc[=COMPILER]]
- [--disable-cxx]
- [--verbose]
- [--version]
- [--mpiversion]
- [--libs]
- [--cflags]
-
-EOF
-  exit $1
-}
-
-if test $# -eq 0 ; then
-  usage 1 1>&2
-fi
-
-while test $# -gt 0 ; do
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case $1 in
-  --mpicc=*)
-    MPICC=$optarg
-    ;;
-  --version)
-    echo $version
-    exit 0
-    ;;
-  --verbose)
-    verbose=1
-    ;;
-  --disable-cxx)
-    disablecxx=yes
-    ;;
-  --mpiversion)
-    tasks="$tasks print_mpiversion"
-    ;;
-  --cflags)
-    tasks="$tasks print_cflags"
-    ;;
-  --libs)
-    tasks="$tasks print_libs"
-    ;;
-  *)
-    usage 1 1>&2
-    ;;
-  esac
-  shift
-done
-
-if test x$MPICC = x ; then
-  MPICC=mpicc
-fi
-
-#
-# LIB
-#
-# load mpi-config.m4
-#
-
-# find m4 file
-M4DIR=`findm4dir`
-
-eval "$(
-m4 -I$M4DIR <<EOF
-changequote([, ])
-define([AC_DEFUN],[define([\$1],[\$2])])
-define([AC_MSG_CHECKING],[
-  if test $verbose -gt 0; then
-    echo -n "checking \$@..."
-  fi
-])
-define([AC_MSG_RESULT],[
-  if test $verbose -gt 0; then
-    echo " \$@"
-  fi
-])
-define([AC_MSG_NOTICE],[
-  if test $verbose -gt 0; then
-    echo "\$@"
-  fi
-])
-define([AC_MSG_ERROR],[
-  if test $verbose -gt 0; then
-    echo "Error: \$@"
-    exit 1
-  fi
-])
-include([mpi-config.m4])
-MPI_CONFIG_HELPER
-EOF
-)"
-
-#
-# output methods
-#
-
-print_mpiversion() {
-  get_mpiparameters
-  echo $MPI_VERSION
-}
-
-print_cflags() {
-  get_mpiparameters
-  if test x$disablecxx = xyes; then
-    MPI_CPPFLAGS="$MPI_CPPFLAGS $MPI_NOCXXFLAGS"
-  fi
-  echo $MPI_CPPFLAGS
-}
-
-print_libs() {
-  get_mpiparameters
-  echo $MPI_LDFLAGS
-}
-
-for task in $tasks; do
-  eval $task
-done
diff --git a/bin/test-version-compare b/bin/test-version-compare
deleted file mode 100755
index a23bf2b6b..000000000
--- a/bin/test-version-compare
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash
-
-set -e
-
-###############################################
-###
-### read lib
-###
-
-canonicalname(){
-	if test $# -ne 1; then
-		echo Usage: canonicalname path >&2
-		return 1
-	fi
-	file="$1"
-	if test ! -e "$file"; then
-		echo $file: file not found >&2
-		return 1
-	fi
-    # if this is a symlink, then follow the symlink
-	if test -L "$file"; then
-		fdir="`dirname \"$file\"`"
-		flink="`readlink \"$file\"`"
-		if test -e "$flink"; then
-			# these are absolute links, or links in the CWD
-			canonicalname "$flink"
-		else
-			canonicalname "$fdir/$flink"
-		fi
-	else
-        # if this is a file, then remember the filename and
-        # canonicalize the directory name
-		if test -f "$file"; then
-			fdir="`dirname \"$file\"`"
-			fname="`basename \"$file\"`"
-			fdir="`canonicalname \"$fdir\"`"
-			echo "$fdir/$fname"
-		fi
-        # if this is a directory, then create an absolute 
-        # directory name and we are done
-		if test -d "$file"; then
-			(cd "$file"; pwd)
-		fi
-	fi
-}
-
-canonicalpath(){
-  if test $# -ne 1; then
-     echo Usage: canonicalpath path >&2
-     return 1
-  fi
-  dirname $(canonicalname "$1")
-}
-
-checkdebug () {
-  while test $# -gt 0; do
-    if test x$1 = x--debug; then
-      echo yes
-      return
-    fi
-    shift
-  done
-  echo no
-}
-
-DEBUG=`checkdebug $@`
-if test "x$DEBUG" = "xyes"; then
-  set -x
-  set -v
-fi
-
-export COMMAND_DIR="`canonicalpath $0`"
-
-# Read the modules find part
-. "$COMMAND_DIR/dunemodules.inc"
-
-#
-# test version checks
-#
-
-test_version_check () {
-  if ! check_version "$1" "$2"; then
-    echo "ERROR: version does not match (found $1, required $2)" >&2
-    #exit 1
-  else
-    echo "OK:    version does match     (found $1, required $2)" >&2
-  fi
-}
-
-test_version_check "1.2.3" ">= 1.2.5 || < 1.2.4"
-test_version_check "1.2.4" ">= 1.2.5 || < 1.2.4"
-test_version_check "1.2.5" ">= 1.2.5 || < 1.2.4"
-test_version_check "1.2" ">= 1.2.5 || < 1.2.4"
-
-test_version_check "1.2.3" ">= 1.2.5 && < 1.2.4"
-test_version_check "1.2.4" "< 1.2.5 && >= 1.2.4"
-
-test_version_check "1.2.3" ">= 1.2"
-test_version_check "1.2.3" "= 2.4.1"
-test_version_check "1.2.3" "= 1.2.3"
-test_version_check "1.2.3" "> 1.2"
-test_version_check "1.2.3" "= 1.2"
-test_version_check "1.2.3" "< 1.2"
-
-check_pattern()
-{
-  PATTERN=$PARSE_SUGDEP_PATTERN
-}
-
-parse_version()
-{
-  local deps="$1"
-  local name=""
-  local dep=""
-  local xdeps=""
-  echo start: $deps
-  while test -n "$deps"; do
-    PATTERN=$PARSE_SUGDEP_PATTERN
-    name=`echo $deps | sed -e "s/$PATTERN/\1/"`
-    ver=`echo $deps | sed -e "s/$PATTERN/\2/" -e 's/[()]//g'`
-    xdeps=`echo $deps | sed -e "s/$PATTERN/\3/"`
-    if test "$deps" = "$xdeps"; then
-      echo Error parsing dependency string \"$1\"
-	  exit 1
-    fi
-    deps=$xdeps
-    echo $name version $ver ... $deps
-  done
-  echo done
-}
-
-parse_version "dune-common (>= 1.2), dune-istl (<999)"
-parse_version "alf (12) bart()c"
-parse_version "a b () c"
diff --git a/bin/xfail-compile-tests b/bin/xfail-compile-tests
deleted file mode 100755
index 3f79973eb..000000000
--- a/bin/xfail-compile-tests
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-make compile_XFAIL
diff --git a/common/.gitignore b/common/.gitignore
deleted file mode 100644
index d0d0108b4..000000000
--- a/common/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-*.lo
-*.swp
-libcommon.la
-semantic.cache
diff --git a/common/Makefile.am b/common/Makefile.am
deleted file mode 100644
index 8014468f0..000000000
--- a/common/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-SUBDIRS = . test exprtmpl
-
-# the standard debug streams are put into the libdune
-noinst_LTLIBRARIES = libcommon.la
-
-libcommon_la_SOURCES = stdstreams.cc configparser.cc
-
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/..
-
-commonincludedir = $(includedir)/dune/common
-commoninclude_HEADERS = alignment.hh array.hh \
-  arraylist.hh bitsetvector.hh debugstream.hh deprecated.hh \
-  enumset.hh exceptions.hh fixedarray.hh fmatrix.hh fmatrixev.hh \
-  fvector.hh genericiterator.hh \
-  helpertemplates.hh iteratorfacades.hh \
-  misc.hh poolallocator.hh finitestack.hh \
-  sllist.hh smartpointer.hh stdstreams.hh timer.hh tuples.hh \
-  typetraits.hh precision.hh bigunsignedint.hh \
-  gcd.hh lcm.hh configparser.hh propertymap.hh \
-  collectivecommunication.hh mpihelper.hh singleton.hh \
-  mpicollectivecommunication.hh geometrytype.hh utility.hh \
-  bartonnackmanifcheck.hh binaryfunctions.hh lru.hh fassign.hh \
-  static_assert.hh smallobject.hh version.hh \
-  float_cmp.cc float_cmp.hh \
-  interfaces.hh nullptr.hh
-
-if EXPRESSIONTEMPLATES
-commoninclude_HEADERS += exprtmpl.hh exprtmpl/scalar.inc exprtmpl/exprexpr.inc
-libcommon_la_SOURCES += exprtmpl.cc
-else
-sourcescheck_NOSOURCES = exprtmpl.hh exprtmpl.cc
-endif
-
-include $(top_srcdir)/am/global-rules
diff --git a/common/alignment.hh b/common/alignment.hh
deleted file mode 100644
index 3e8c50aa6..000000000
--- a/common/alignment.hh
+++ /dev/null
@@ -1,117 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_ALIGNMENT_HH
-#define DUNE_ALIGNMENT_HH
-#include <cstddef>
-#if HAVE_TYPE_TRAITS
-#include <type_traits>
-#elif HAVE_TR1_TYPE_TRAITS
-#include <tr1/type_traits>
-#endif
-
-namespace Dune
-{
-
-  /** @addtogroup Common
-   *
-   * @{
-   */
-  /**
-   * @file
-   * @brief This file implements a template class to determine alignment
-   * requirements of types at compile time.
-   * @author Markus Blatt
-   */
-
-  namespace
-  {
-
-    /**
-     * @brief Helper class to measure alignment requirement.
-     * @tparam T The type we want to measure the alignment requirement for.
-     */
-    template<class T>
-    struct AlignmentStruct
-    {
-      char c;
-      T t;
-      void hack();
-    };
-
-    /**
-     * @brief Helper class to measure alignment requirement.
-     * @tparam T The type we want to measure the alignment requirement for.
-     */
-    template<class T, std::size_t N>
-    struct AlignmentHelper
-    {
-      enum { N2 = sizeof(AlignmentStruct<T>) - sizeof(T) - N };
-      char padding1[N];
-      T t;
-      char padding2[N2];
-    };
-
-#define ALIGNMENT_MODULO(a, b)   (a % b == 0 ? \
-                                  static_cast<std::size_t>(b) : \
-                                  static_cast<std::size_t>(a % b))
-#define ALIGNMENT_MIN(a, b)      (static_cast<std::size_t>(a) <   \
-                                  static_cast<std::size_t>(b) ? \
-                                  static_cast<std::size_t>(a) : \
-                                  static_cast<std::size_t>(b))
-    /**  @brief does the actual calculations. */
-    template <class T, std::size_t N>
-    struct AlignmentTester
-    {
-      typedef AlignmentStruct<T>        s;
-      typedef AlignmentHelper<T, N>     h;
-      typedef AlignmentTester<T, N - 1> next;
-      enum
-      {
-        a1       = ALIGNMENT_MODULO(N        , sizeof(T)),
-        a2       = ALIGNMENT_MODULO(h::N2    , sizeof(T)),
-        a3       = ALIGNMENT_MODULO(sizeof(h), sizeof(T)),
-        a        = sizeof(h) == sizeof(s) ? ALIGNMENT_MIN(a1, a2) : a3,
-        result   = ALIGNMENT_MIN(a, next::result)
-      };
-    };
-
-    /**  @brief does the actual calculations. */
-    template <class T>
-    struct AlignmentTester<T, 0>
-    {
-      enum
-      {
-        result = ALIGNMENT_MODULO(sizeof(AlignmentStruct<T>), sizeof(T))
-      };
-    };
-  } //end anonymous namspace
-
-  /**
-   * @brief Calculates the alignment requirement of a type.
-   *
-   * @see http://en.wikipedia.org/wiki/Data_structure_alignment
-   *
-   * This will be a safe value and not an optimal one.
-   * If TR1 is available it falls back to std::alignment_of.
-   */
-  template <class T>
-  struct AlignmentOf
-  {
-
-    enum
-    {
-      /** @brief The alignment requirement. */
-#ifdef HAVE_TYPE_TRAITS
-      value = std::alignment_of<T>::value
-#elif HAVE_TR1_TYPETRAITS
-      value = std::tr1::alignment_of<T>::value
-#else
-      value = AlignmentTester<T, sizeof(AlignmentStruct<T>) - sizeof(T) -1>::result
-#endif
-    };
-  };
-
-  /** @} */
-}
-#endif
diff --git a/common/array.hh b/common/array.hh
deleted file mode 100644
index 08ef191c6..000000000
--- a/common/array.hh
+++ /dev/null
@@ -1,140 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_ARRAY_HH
-#define DUNE_ARRAY_HH
-
-/** \file
-    \brief implementation of the stl array class (a static array)
- */
-
-#include <iostream>
-#include <iomanip>
-#include <string>
-
-// Include system implementation of array class if present
-#ifdef HAVE_ARRAY
-#include <array>
-#endif
-#ifdef HAVE_TR1_ARRAY
-#include <tr1/array>
-#endif
-
-
-namespace Dune
-{
-  /** @addtogroup Common
-
-     @{
-   */
-
-#ifdef HAVE_ARRAY
-  using std::array;
-#elif defined HAVE_TR1_ARRAY
-  using std::tr1::array;
-#else
-
-  /** \brief Simple fixed size array class.  This replaces std::array,
-   * if that is not available.
-   *
-   */
-  template<class T, int N>
-  class array {
-  public:
-
-    //! Remember the storage type
-    typedef T value_type;
-
-    /** \brief Reference to an object */
-    typedef value_type&                             reference;
-
-    /** \brief Const reference to an object */
-    typedef const value_type&                       const_reference;
-
-    /** \brief Iterator type */
-    typedef value_type*                             iterator;
-
-    /** \brief Const iterator type */
-    typedef const value_type*                       const_iterator;
-
-    /** \brief Type used for array indices */
-    typedef std::size_t size_type;
-
-    /** \brief Difference type */
-    typedef std::ptrdiff_t difference_type;
-
-    /** \brief Reverse iterator type */
-    typedef std::reverse_iterator<iterator>         reverse_iterator;
-
-    /** \brief Const reverse iterator type */
-    typedef std::reverse_iterator<const_iterator>   const_reverse_iterator;
-
-    //! Create uninitialized array
-    array () {}
-
-    /** \brief Return array size */
-    size_type size() const {return N;}
-
-    //! Assign value to all entries
-    array<T,N>& operator= (const T& t)
-    {
-      for (int i=0; i<N; i++) a[i]=t;
-      return (*this);
-    }
-
-    //! \brief Assign value to all entries
-    void assign(const T& t)
-    {
-      for (int i=0; i<N; i++) a[i]=t;
-    }
-
-    //! Component access
-    reference operator[] (size_type i)
-    {
-      return a[i];
-    }
-
-    //! Const component access
-    const_reference operator[] (size_type i) const
-    {
-      return a[i];
-    }
-
-    iterator begin ()
-    {
-      return a;
-    }
-
-    const_iterator begin () const
-    {
-      return a;
-    }
-
-    iterator end ()
-    {
-      return a + N;
-    }
-
-    const_iterator end () const
-    {
-      return a + N;
-    }
-
-  protected:
-    T a[(N > 0) ? N : 1];
-  };
-#endif
-  //! Output operator for array
-  template <class T, int N>
-  inline std::ostream& operator<< (std::ostream& s, array<T,N> e)
-  {
-    s << "[";
-    for (int i=0; i<N-1; i++) s << e[i] << ",";
-    s << e[N-1] << "]";
-    return s;
-  }
-
-  /** @} */
-
-} // end namespace Dune
-
-#endif
diff --git a/common/arraylist.hh b/common/arraylist.hh
deleted file mode 100644
index 6f1336d4a..000000000
--- a/common/arraylist.hh
+++ /dev/null
@@ -1,725 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_ARRAYLIST_HH
-#define DUNE_ARRAYLIST_HH
-
-#include <cassert>
-#include <vector>
-#include "smartpointer.hh"
-#include "array.hh"
-#include "iteratorfacades.hh"
-
-namespace Dune
-{
-  // forward declaration
-  template<class T, int N, class A>
-  class ArrayListIterator;
-
-  template<class T, int N, class A>
-  class ConstArrayListIterator;
-
-  /**
-   * @file
-   * This file implements the class ArrayList which behaves like
-   * dynamically growing array together with
-   * the class ArrayListIterator which is random access iterator as needed
-   * by the stl for sorting and other algorithms.
-   * @author Markus Blatt
-   */
-  /**
-   * @addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * @brief A dynamically growing  random access list.
-   *
-   * Internally the data is organised in a list of arrays of fixed size.
-   * Whenever the capacity of the array list is not sufficient a new
-   * Dune::array is allocated. In contrast to
-   * std::vector this approach prevents data copying. On the outside
-   * we provide the same interface as the stl random access containers.
-   *
-   * While the concept sounds quite similar to std::deque there are slight
-   * but crucial differences:
-   * - In contrast to std:deque the actual implementation (a list of arrays)
-   * is known. While
-   * for std::deque there are at least two possible implementations
-   * (dynamic array or using a double linked list.
-   * - In contrast to std:deque there is not insert which invalidates iterators
-   * but our push_back method leaves all iterators valid.
-   * - Additional functionality lets one delete entries before and at an
-   * iterator while moving the iterator to the next valid position.
-   */
-  template<class T, int N=100, class A=std::allocator<T> >
-  class ArrayList
-  {
-  public:
-    /**
-     * @brief The member type that is stored.
-     *
-     * Has to be assignable and has to have an empty constructor.
-     */
-    typedef T MemberType;
-
-    /**
-     * @brief Value type for stl compliance.
-     */
-    typedef T value_type;
-
-    /**
-     * @brief The type of a reference to the type we store.
-     */
-    typedef T& reference;
-
-    /**
-     * @brief The type of a const reference to the type we store.
-     */
-    typedef const T& const_reference;
-
-    /**
-     * @brief The type of a pointer to the type we store.
-     */
-    typedef T* pointer;
-
-    /**
-     * @brief The type of a const pointer to the type we store.
-     */
-    typedef const T* const_pointer;
-
-    enum
-    {
-      /**
-       * @brief The number of elements in one chunk of the list.
-       * This has to be at least one. The default is 100.
-       */
-      chunkSize_ = (N > 0) ? N : 1
-    };
-
-    /**
-     * @brief A random access iterator.
-     */
-    typedef ArrayListIterator<MemberType,N,A> iterator;
-
-    /**
-     * @brief A constant random access iterator.
-     */
-    typedef ConstArrayListIterator<MemberType,N,A> const_iterator;
-
-    /**
-     * @brief The size type.
-     */
-    typedef std::size_t size_type;
-
-    /**
-     * @brief The difference type.
-     */
-    typedef std::ptrdiff_t difference_type;
-
-    /**
-     * @brief Get an iterator that is positioned at the first element.
-     * @return The iterator.
-     */
-    iterator begin();
-
-    /**
-     * @brief Get a random access iterator that is positioned at the
-     * first element.
-     * @return The iterator.
-     */
-    const_iterator begin() const;
-
-    /**
-     * @brief Get a random access iterator positioned after the last
-     * element
-     */
-    iterator end();
-
-    /**
-     * @brief Get a random access iterator positioned after the last
-     * element
-     */
-    const_iterator end() const;
-
-    /**
-     * @brief Append an entry to the list.
-     * @param entry The new entry.
-     */
-    inline void push_back(const_reference entry);
-
-    /**
-     * @brief Get the element at specific position.
-     * @param i The index of the position.
-     * @return The element at that position.
-     */
-    inline reference operator[](size_type i);
-
-    /**
-     * @brief Get the element at specific position.
-     * @param i The index of the position.
-     * @return The element at that position.
-     */
-    inline const_reference operator[](size_type i) const;
-
-    /**
-     * @brief Get the number of elements in the list.
-     * @return The number of elements.
-     */
-    inline size_type size() const;
-
-    /**
-     * @brief Get the current capacity of the list.
-     * @return The capacity.
-     */
-    inline size_type capacity() const;
-
-    /**
-     * @brief Purge the list.
-     *
-     * If there are empty chunks at the front all nonempty
-     * chunks will be moved towards the front and the capacity
-     * increases.
-     */
-    inline void purge();
-
-    /**
-     * @brief Delete all entries from the list.
-     */
-    inline void clear();
-    /**
-     * @brief Constructs an Array list with one chunk.
-     */
-    ArrayList();
-
-  private:
-
-    /**
-     * @brief The allocators for the fixed array.
-     */
-    typedef typename A::template rebind<SmartPointer<array<MemberType,chunkSize_> > >::other
-    SmartPointerAllocator;
-
-    /**
-     * @brief The iterator needs access to the private variables.
-     */
-    friend class ArrayListIterator<T,N,A>;
-    friend class ConstArrayListIterator<T,N,A>;
-
-    /** @brief the data chunks of our list. */
-    std::vector<SmartPointer<array<MemberType,chunkSize_> >,
-        SmartPointerAllocator> chunks_;
-    /** @brief The current data capacity. */
-    size_type capacity_;
-    /** @brief The current number of elements in our data structure. */
-    size_type size_;
-    /** @brief The index of the first entry. */
-    size_type start_;
-    /**
-     * @brief Get the element at specific position.
-     *
-     * Index 0 always refers to the first entry in the list
-     * whether it is erased or not!
-     * @param i The index of the position.
-     * @return The element at that position.
-     */
-    inline reference elementAt(size_type i);
-
-    /**
-     * @brief Get the element at specific position.
-     *
-     * Index 0 always refers to the first entry in the list
-     * whether it is erased or not!
-     * @param i The index of the position.
-     * @return The element at that position.
-     */
-    inline const_reference elementAt(size_type i) const;
-  };
-
-
-  /**
-   * @brief A random access iterator for the Dune::ArrayList class.
-   */
-  template<class T, int N, class A>
-  class ArrayListIterator : public RandomAccessIteratorFacade<ArrayListIterator<T,N,A>,
-                                typename A::value_type,
-                                typename A::reference,
-                                typename A::difference_type>
-  {
-
-    friend class ArrayList<T,N,A>;
-    friend class ConstArrayListIterator<T,N,A>;
-  public:
-    /**
-     * @brief The member type.
-     */
-    typedef typename A::value_type MemberType;
-
-    typedef typename A::difference_type difference_type;
-
-    typedef typename A::size_type size_type;
-
-    enum
-    {
-      /**
-       * @brief The number of elements in one chunk of the list.
-       *
-       * This has to be at least one. The default is 100.
-       */
-      chunkSize_ = (N > 0) ? N : 1
-    };
-
-
-    /**
-     * @brief Comares two iterators.
-     * @return True if the iterators are for the same list and
-     * at the position.
-     */
-    inline bool equals(const ArrayListIterator<MemberType,N,A>& other) const;
-
-    /**
-     * @brief Comares two iterators.
-     * @return True if the iterators are for the same list and
-     * at the position.
-     */
-    inline bool equals(const ConstArrayListIterator<MemberType,N,A>& other) const;
-
-    /**
-     * @brief Increment the iterator.
-     */
-    inline void increment();
-
-    /**
-     * @brief decrement the iterator.
-     */
-    inline void decrement();
-
-    /**
-     * @brief Get the value of the list at an arbitrary position.
-     * @return The value at that postion.
-     */
-    inline MemberType& elementAt(size_type i) const;
-
-    /**
-     * @brief Access the element at the current position.
-     * @return The element at the current position.
-     */
-    inline MemberType& dereference() const;
-
-    /**
-     * @brief Erase all entries before the current position
-     * and the one at the current position.
-     *
-     * Afterwards the iterator will be positioned at the next
-     * unerased entry or the end if the list is empty.
-     * This does not invalidate any iterators positioned after
-     * the current position but those positioned at previous ones.
-     * @return An iterator to the first position after the deleted
-     * ones or to the end if the list is empty.
-     */
-    inline void eraseToHere();
-
-    /** \todo Please doc me! */
-    inline size_type position(){return position_;}
-
-    /** \todo Please doc me! */
-    inline void advance(difference_type n);
-
-    /** \todo Please doc me! */
-    inline difference_type distanceTo(const ArrayListIterator<T,N,A>& other) const;
-
-    /** \todo Please doc me! */
-    inline ArrayListIterator<T,N,A>& operator=(const ArrayListIterator<T,N,A>& other);
-
-    //! Standard constructor
-    inline ArrayListIterator() : position_(0)
-    {}
-
-  private:
-    /**
-     * @brief Constructor.
-     * @param list The list we are an iterator for.
-     * @param position The initial position of the iterator.
-     */
-    inline ArrayListIterator(ArrayList<T,N,A>& arrayList, size_type position);
-
-    /**
-     * @brief The current postion.
-     */
-    size_type position_;
-    /**
-     * @brief The list we are an iterator for.
-     */
-    ArrayList<T,N,A>* list_;
-  };
-
-  /**
-   * @brief A constant random access iterator for the Dune::ArrayList class.
-   */
-  template<class T, int N, class A>
-  class ConstArrayListIterator
-    : public RandomAccessIteratorFacade<ConstArrayListIterator<T,N,A>,
-          const typename A::value_type,
-          typename A::const_reference,
-          typename A::difference_type>
-  {
-
-    friend class ArrayList<T,N,A>;
-    friend class ArrayListIterator<T,N,A>;
-
-  public:
-    /**
-     * @brief The member type.
-     */
-    typedef typename A::value_type MemberType;
-
-    typedef typename A::difference_type difference_type;
-
-    typedef typename A::size_type size_type;
-
-    enum
-    {
-      /**
-       * @brief The number of elements in one chunk of the list.
-       *
-       * This has to be at least one. The default is 100.
-       */
-      chunkSize_ = (N > 0) ? N : 1
-    };
-
-    /**
-     * @brief Comares to iterators.
-     * @return true if the iterators are for the same list and
-     * at the position.
-     */
-    inline bool equals(const ConstArrayListIterator<MemberType,N,A>& other) const;
-
-    /**
-     * @brief Increment the iterator.
-     */
-    inline void increment();
-
-    /**
-     * @brief decrement the iterator.
-     */
-    inline void decrement();
-
-    /** \todo Please doc me! */
-    inline void advance(difference_type n);
-
-    /** \todo Please doc me! */
-    inline difference_type distanceTo(const ConstArrayListIterator<T,N,A>& other) const;
-
-    /**
-     * @brief Get the value of the list at an arbitrary position.
-     * @return The value at that postion.
-     */
-    inline const MemberType& elementAt(size_type i) const;
-
-    /**
-     * @brief Access the element at the current position.
-     * @return The element at the current position.
-     */
-    inline const MemberType& dereference() const;
-
-    inline const ConstArrayListIterator<T,N,A>& operator=(const ConstArrayListIterator<T,N,A>& other);
-
-    inline ConstArrayListIterator() : position_(0)
-    {}
-
-    inline ConstArrayListIterator(const ArrayListIterator<T,N,A>& other);
-
-  private:
-
-    /**
-     * @brief Constructor.
-     * @param list The list we are an iterator for.
-     * @param position The initial position of the iterator.
-     */
-    inline ConstArrayListIterator(const ArrayList<T,N,A>& arrayList, size_type position);
-
-    /**
-     * @brief The current postion.
-     */
-    size_type position_;
-    /**
-     * @brief The list we are an iterator for.
-     */
-    const ArrayList<T,N,A>* list_;
-  };
-
-
-  template<class T, int N, class A>
-  ArrayList<T,N,A>::ArrayList()
-    : capacity_(0), size_(0), start_(0)
-  {
-    chunks_.reserve(100);
-  }
-
-  template<class T, int N, class A>
-  void ArrayList<T,N,A>::clear(){
-    capacity_=0;
-    size_=0;
-    start_=0;
-    chunks_.clear();
-  }
-
-  template<class T, int N, class A>
-  size_t ArrayList<T,N,A>::size() const
-  {
-    return size_;
-  }
-
-  template<class T, int N, class A>
-  size_t ArrayList<T,N,A>::capacity() const
-  {
-    return capacity_;
-  }
-
-  template<class T, int N, class A>
-  void ArrayList<T,N,A>::push_back(const_reference entry)
-  {
-    size_t index=start_+size_;
-    if(index==capacity_)
-    {
-      chunks_.push_back(SmartPointer<array<MemberType,chunkSize_> >());
-      capacity_ += chunkSize_;
-    }
-    elementAt(index)=entry;
-    ++size_;
-  }
-
-  template<class T, int N, class A>
-  typename ArrayList<T,N,A>::reference ArrayList<T,N,A>::operator[](size_type i)
-  {
-    return elementAt(start_+i);
-  }
-
-
-  template<class T, int N, class A>
-  typename ArrayList<T,N,A>::const_reference ArrayList<T,N,A>::operator[](size_type i) const
-  {
-    return elementAt(start_+i);
-  }
-
-  template<class T, int N, class A>
-  typename ArrayList<T,N,A>::reference ArrayList<T,N,A>::elementAt(size_type i)
-  {
-    return chunks_[i/chunkSize_]->operator[](i%chunkSize_);
-  }
-
-
-  template<class T, int N, class A>
-  typename ArrayList<T,N,A>::const_reference ArrayList<T,N,A>::elementAt(size_type i) const
-  {
-    return chunks_[i/chunkSize_]->operator[](i%chunkSize_);
-  }
-
-  template<class T, int N, class A>
-  ArrayListIterator<T,N,A> ArrayList<T,N,A>::begin()
-  {
-    return ArrayListIterator<T,N,A>(*this, start_);
-  }
-
-  template<class T, int N, class A>
-  ConstArrayListIterator<T,N,A> ArrayList<T,N,A>::begin() const
-  {
-    return ConstArrayListIterator<T,N,A>(*this, start_);
-  }
-
-  template<class T, int N, class A>
-  ArrayListIterator<T,N,A> ArrayList<T,N,A>::end()
-  {
-    return ArrayListIterator<T,N,A>(*this, start_+size_);
-  }
-
-  template<class T, int N, class A>
-  ConstArrayListIterator<T,N,A> ArrayList<T,N,A>::end() const
-  {
-    return ConstArrayListIterator<T,N,A>(*this, start_+size_);
-  }
-
-  template<class T, int N, class A>
-  void ArrayList<T,N,A>::purge()
-  {
-    // Distance to copy to the left.
-    size_t distance = start_/chunkSize_;
-    if(distance>0) {
-      // Number of chunks with entries in it;
-      size_t chunks = ((start_%chunkSize_ + size_)/chunkSize_ );
-
-      typedef typename std::vector<SmartPointer<array<MemberType,
-                  chunkSize_> > >::iterator iterator;
-
-      // Copy chunks to the left.
-      std::copy(chunks_.begin()+distance,
-                chunks_.begin()+(distance+chunks), chunks_.begin());
-
-      // Calculate new parameters
-      start_ = start_ % chunkSize_;
-      //capacity += distance * chunkSize_;
-    }
-  }
-
-  template<class T, int N, class A>
-  void ArrayListIterator<T,N,A>::advance(difference_type i)
-  {
-    position_+=i;
-  }
-
-  template<class T, int N, class A>
-  void ConstArrayListIterator<T,N,A>::advance(difference_type i)
-  {
-    position_+=i;
-  }
-
-
-  template<class T, int N, class A>
-  bool ArrayListIterator<T,N,A>::equals(const ArrayListIterator<MemberType,N,A>& other) const
-  {
-    // Makes only sense if we reference a common list
-    assert(list_==(other.list_));
-    return position_==other.position_ ;
-  }
-
-
-  template<class T, int N, class A>
-  bool ArrayListIterator<T,N,A>::equals(const ConstArrayListIterator<MemberType,N,A>& other) const
-  {
-    // Makes only sense if we reference a common list
-    assert(list_==(other.list_));
-    return position_==other.position_ ;
-  }
-
-
-  template<class T, int N, class A>
-  bool ConstArrayListIterator<T,N,A>::equals(const ConstArrayListIterator<MemberType,N,A>& other) const
-  {
-    // Makes only sense if we reference a common list
-    assert(list_==(other.list_));
-    return position_==other.position_ ;
-  }
-
-  template<class T, int N, class A>
-  void ArrayListIterator<T,N,A>::increment()
-  {
-    ++position_;
-  }
-
-  template<class T, int N, class A>
-  void ConstArrayListIterator<T,N,A>::increment()
-  {
-    ++position_;
-  }
-
-  template<class T, int N, class A>
-  void ArrayListIterator<T,N,A>::decrement()
-  {
-    --position_;
-  }
-
-  template<class T, int N, class A>
-  void ConstArrayListIterator<T,N,A>::decrement()
-  {
-    --position_;
-  }
-
-  template<class T, int N, class A>
-  typename ArrayListIterator<T,N,A>::MemberType& ArrayListIterator<T,N,A>::elementAt(size_type i) const
-  {
-    i+=position_;
-    return list_->elementAt(i+position_);
-  }
-
-  template<class T, int N, class A>
-  const typename ConstArrayListIterator<T,N,A>::MemberType& ConstArrayListIterator<T,N,A>::elementAt(size_type i) const
-  {
-    return list_->elementAt(i+position_);
-  }
-
-  template<class T, int N, class A>
-  typename ArrayListIterator<T,N,A>::MemberType& ArrayListIterator<T,N,A>::dereference() const
-  {
-    return list_->elementAt(position_);
-  }
-
-  template<class T, int N, class A>
-  const typename ConstArrayListIterator<T,N,A>::MemberType& ConstArrayListIterator<T,N,A>::dereference() const
-  {
-    return list_->elementAt(position_);
-  }
-
-  template<class T, int N, class A>
-  typename ArrayListIterator<T,N,A>::difference_type ArrayListIterator<T,N,A>::distanceTo(const ArrayListIterator<T,N,A>& other) const
-  {
-    // Makes only sense if we reference a common list
-    assert(list_==(other.list_));
-    return other.position_ - position_;
-  }
-
-  template<class T, int N, class A>
-  typename ConstArrayListIterator<T,N,A>::difference_type ConstArrayListIterator<T,N,A>::distanceTo(const ConstArrayListIterator<T,N,A>& other) const
-  {
-    // Makes only sense if we reference a common list
-    assert(list_==(other.list_));
-    return other.position_ - position_;
-  }
-
-  template<class T, int N, class A>
-  ArrayListIterator<T,N,A>& ArrayListIterator<T,N,A>::operator=(const ArrayListIterator<T,N,A>& other)
-  {
-    position_=other.position_;
-    list_=other.list_;
-    return *this;
-  }
-
-  template<class T, int N, class A>
-  const ConstArrayListIterator<T,N,A>& ConstArrayListIterator<T,N,A>::operator=(const ConstArrayListIterator<T,N,A>& other)
-  {
-    position_=other.position_;
-    list_=other.list_;
-    return *this;
-  }
-
-  template<class T, int N, class A>
-  void ArrayListIterator<T,N,A>::eraseToHere()
-  {
-    list_->size_ -= ++position_ - list_->start_;
-    // chunk number of the new position.
-    size_t posChunkStart = position_ / chunkSize_;
-    // number of chunks to deallocate
-    size_t chunks = (position_ - list_->start_ + list_->start_ % chunkSize_)
-                    / chunkSize_;
-    list_->start_ = position_;
-
-    // Deallocate memory not needed any more.
-    for(size_t chunk=0; chunk<chunks; chunk++)
-      list_->chunks_[--posChunkStart].deallocate();
-
-    // As new entries only get append the capacity shrinks
-    list_->capacity_-=chunks*chunkSize_;
-  }
-
-  template<class T, int N, class A>
-  ArrayListIterator<T,N,A>::ArrayListIterator(ArrayList<T,N,A>& arrayList, size_type position)
-    : position_(position), list_(&arrayList)
-  {}
-
-
-  template<class T, int N, class A>
-  ConstArrayListIterator<T,N,A>::ConstArrayListIterator(const ArrayList<T,N,A>& arrayList,
-                                                        size_type position)
-    : position_(position), list_(&arrayList)
-  {}
-
-  template<class T, int N, class A>
-  ConstArrayListIterator<T,N,A>::ConstArrayListIterator(const ArrayListIterator<T,N,A>& other)
-    : position_(other.position_), list_(other.list_)
-  {}
-
-
-  /** @} */
-}
-#endif
diff --git a/common/bartonnackmanifcheck.hh b/common/bartonnackmanifcheck.hh
deleted file mode 100644
index 7527750ca..000000000
--- a/common/bartonnackmanifcheck.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-/** @file
-   @author Robert Kloefkorn
-   @brief Provides check for implementation of interface methods when using
-   static polymorphism, i.e. Barton-Nackman trick.
-   Use by invoking CHECK_INTERFACE_IMPLEMENTATION(asImp().methodToCheck())
-   and for template methods double (
-   CHECK_INTERFACE_IMPLEMENTATION((asImp().template methodToCheck<param> ())).
- **/
-
-//- Dune includes
-#include <dune/common/exceptions.hh>
-
-#ifndef CHECK_INTERFACE_IMPLEMENTATION
-#define CHECK_INTERFACE_IMPLEMENTATION(dummy)
-#ifndef NDEBUG
-// only do checking if DUNE_DEVEL_MODE is defined aswell
-#ifdef DUNE_DEVEL_MODE
-#undef CHECK_INTERFACE_IMPLEMENTATION
-#define CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
-  {\
-    static bool call = false; \
-    if( call == true ) \
-      DUNE_THROW(NotImplemented,"Interface method not implemented!");\
-    call = true; \
-    (__interface_method_to_call__); \
-    call = false; \
-  }
-#endif
-#endif
-#endif
-
-/** The macro CHECK_AND_CALL_INTERFACE_IMPLEMENTATION throws an exception,
-   if the interface method ist not implemented and just calls the method
-   otherwise. If NDEBUG is defined no
-   checking is done and the method is just called.
- */
-#ifndef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
-#define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
-  (__interface_method_to_call__)
-#ifndef NDEBUG
-// only do checking if DUNE_DEVEL_MODE is defined aswell
-#ifdef DUNE_DEVEL_MODE
-#undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
-#define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
-  CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
-#endif
-#endif
-#endif
diff --git a/common/bigunsignedint.hh b/common/bigunsignedint.hh
deleted file mode 100644
index 845d88c12..000000000
--- a/common/bigunsignedint.hh
+++ /dev/null
@@ -1,607 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_BIGUNSIGNEDINT_HH
-#define DUNE_BIGUNSIGNEDINT_HH
-
-#include <iostream>
-#include <limits>
-#include <cstdlib>
-#include <dune/common/exceptions.hh>
-
-/**
- * @file
- * @brief  Portable very large unsigned integers
- * @author Peter Bastian
- */
-
-namespace std
-{
-  template<class T> struct numeric_limits;
-}
-
-namespace Dune
-{
-  /** @addtogroup Common
-   *
-   * @{
-   */
-
-#if HAVE_MPI
-  template<class K>
-  struct MPITraits;
-#endif
-
-  /**
-   * @brief Portable very large unsigned integers
-   *
-   * Implements (arbitrarily) large unsigned integers to be used as global
-   * ids in some grid managers. Size is a template parameter.
-   *
-   * \tparam k Number of bits of the integer type
-   */
-
-  template<int k>
-  class bigunsignedint {
-  public:
-
-    // unsigned short is 16 bits wide, n is the number of digits needed
-    enum { bits=std::numeric_limits<unsigned short>::digits, n=k/bits+(k%bits!=0),
-           hexdigits=4, bitmask=0xFFFF, compbitmask=0xFFFF0000,
-           overflowmask=0x1 };
-
-    //! Construct uninitialized
-    bigunsignedint ();
-
-    //! Construct from signed int
-    bigunsignedint (int x);
-
-    //! Construct from unsigned int
-    bigunsignedint (std::size_t x);
-
-    //! Print number in hex notation
-    void print (std::ostream& s) const ;
-
-    //! add
-    bigunsignedint<k> operator+ (const bigunsignedint<k>& x) const;
-
-    //! subtract
-    bigunsignedint<k> operator- (const bigunsignedint<k>& x) const;
-
-    //! multiply
-    bigunsignedint<k> operator* (const bigunsignedint<k>& x) const;
-
-    //! prefix increment
-    bigunsignedint<k>& operator++ ();
-
-    //! divide
-    bigunsignedint<k> operator/ (const bigunsignedint<k>& x) const;
-
-    //! modulo
-    bigunsignedint<k> operator% (const bigunsignedint<k>& x) const;
-
-
-    //! bitwise and
-    bigunsignedint<k> operator& (const bigunsignedint<k>& x) const;
-
-    //! bitwise exor
-    bigunsignedint<k> operator^ (const bigunsignedint<k>& x) const;
-
-    //! bitwise or
-    bigunsignedint<k> operator| (const bigunsignedint<k>& x) const;
-
-    //! bitwise komplement
-    bigunsignedint<k> operator~ () const;
-
-
-    //! left shift1/
-    bigunsignedint<k> operator<< (int i) const;
-
-    //! right shift
-    bigunsignedint<k> operator>> (int i) const;
-
-
-    //! less than
-    bool operator< (const bigunsignedint<k>& x) const;
-
-    //! less than or equal
-    bool operator<= (const bigunsignedint<k>& x) const;
-
-    //! greater than
-    bool operator> (const bigunsignedint<k>& x) const;
-
-    //! greater or equalt
-    bool operator>= (const bigunsignedint<k>& x) const;
-
-    //! equal
-    bool operator== (const bigunsignedint<k>& x) const;
-
-    //! not equal
-    bool operator!= (const bigunsignedint<k>& x) const;
-
-
-    //! export to other types
-    //	operator unsigned int () const;
-    unsigned int touint() const;
-
-    friend class bigunsignedint<k/2>;
-    friend class std::numeric_limits<bigunsignedint<k> >;
-
-  private:
-    unsigned short digit[n];
-#if HAVE_MPI
-    friend class MPITraits<bigunsignedint<k> >;
-#endif
-    inline void assign(std::size_t x);
-
-
-  } ;
-
-  // Constructors
-  template<int k>
-  bigunsignedint<k>::bigunsignedint ()
-  {  }
-
-  template<int k>
-  bigunsignedint<k>::bigunsignedint (int y)
-  {
-    std::size_t x = std::abs(y);
-    assign(x);
-  }
-
-  template<int k>
-  bigunsignedint<k>::bigunsignedint (std::size_t x)
-  {
-    assign(x);
-  }
-  template<int k>
-  void bigunsignedint<k>::assign(std::size_t x)
-  {
-    int no=std::min(static_cast<int>(n),
-                    static_cast<int>(std::numeric_limits<std::size_t>::digits/bits));
-
-    for(int i=0; i<no; ++i) {
-      digit[i] = (x&bitmask);
-      x=x>>bits;
-    }
-    for (unsigned int i=no; i<n; i++) digit[i]=0;
-  }
-
-  // export
-  template<int k>
-  inline unsigned int bigunsignedint<k>::touint () const
-  {
-    return (digit[1]<<bits)+digit[0];
-  }
-
-  // print
-  template<int k>
-  inline void bigunsignedint<k>::print (std::ostream& s) const
-  {
-    bool leading=false;
-
-    // print from left to right
-    for (int i=n-1; i>=0; i--)
-      for (int d=hexdigits-1; d>=0; d--)
-      {
-        // extract one hex digit
-        int current = (digit[i]>>(d*4))&0xF;
-        if (current!=0)
-        {
-          //			  s.setf(std::ios::noshowbase);
-          s << std::hex << current;
-          leading = false;
-        }
-        else if (!leading) s << std::hex << current;
-      }
-    if (leading) s << "0";
-    s << std::dec;
-  }
-
-  template <int k>
-  inline std::ostream& operator<< (std::ostream& s, const bigunsignedint<k>& x)
-  {
-    x.print(s);
-    return s;
-  }
-
-
-  // Operators
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator+ (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<k> result;
-    int overflow=0;
-
-    for (unsigned int i=0; i<n; i++)
-    {
-      int sum = ((int)digit[i]) + ((int)x.digit[i]) + overflow;
-      result.digit[i] = sum&bitmask;
-      overflow = (sum>>bits)&overflowmask;
-    }
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator- (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<k> result;
-    int overflow=0;
-
-    for (unsigned int i=0; i<n; i++)
-    {
-      int diff = ((int)digit[i]) - (((int)x.digit[i]) + overflow);
-      if (diff>=0)
-        result.digit[i] = (unsigned short) diff;
-      else
-      {
-        result.digit[i] = (unsigned short) (diff+bitmask);
-        overflow = 1;
-      }
-    }
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator* (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<2*k> finalproduct(0);
-
-    for (unsigned int m=0; m<n; m++)     // digit in right factor
-    {
-      bigunsignedint<2*k> singleproduct(0);
-      unsigned int overflow(0);
-      for (unsigned int i=0; i<n; i++)
-      {
-        unsigned int digitproduct = ((unsigned int)digit[i])*((unsigned int)x.digit[m])+overflow;
-        singleproduct.digit[i+m] = (unsigned short) (digitproduct&bitmask);
-        overflow = (digitproduct>>bits)&bitmask;
-      }
-      finalproduct = finalproduct+singleproduct;
-    }
-
-    bigunsignedint<k> result;
-    for (unsigned int i=0; i<n; i++) result.digit[i] = finalproduct.digit[i];
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k>& bigunsignedint<k>::operator++ ()
-  {
-    int overflow=1;
-
-    for (unsigned int i=0; i<n; i++)
-    {
-      int sum = ((int)digit[i]) + overflow;
-      digit[i] = sum&bitmask;
-      overflow = (sum>>bits)&overflowmask;
-    }
-    return *this;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator/ (const bigunsignedint<k>& x) const
-  {
-    if(x==0)
-      DUNE_THROW(Dune::MathError, "division by zero!");
-
-    // better slow than nothing
-    bigunsignedint<k> temp(*this);
-    bigunsignedint<k> result(0);
-
-    while (temp>=x)
-    {
-      ++result;
-      temp = temp-x;
-    }
-
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator% (const bigunsignedint<k>& x) const
-  {
-    // better slow than nothing
-    bigunsignedint<k> temp(*this);
-    bigunsignedint<k> result(0);
-
-    while (temp>=x)
-    {
-      ++result;
-      temp = temp-x;
-    }
-
-    return temp;
-  }
-
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator& (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<k> result;
-    for (unsigned int i=0; i<n; i++)
-      result.digit[i] = digit[i]&x.digit[i];
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator^ (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<k> result;
-    for (unsigned int i=0; i<n; i++)
-      result.digit[i] = digit[i]^x.digit[i];
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator| (const bigunsignedint<k>& x) const
-  {
-    bigunsignedint<k> result;
-    for (unsigned int i=0; i<n; i++)
-      result.digit[i] = digit[i]|x.digit[i];
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator~ () const
-  {
-    bigunsignedint<k> result;
-    for (unsigned int i=0; i<n; i++)
-      result.digit[i] = ~digit[i];
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator<< (int shift) const
-  {
-    bigunsignedint<k> result(0);
-
-    // multiples of bits
-    int j=shift/bits;
-    for (int i=n-1-j; i>=0; i--)
-      result.digit[i+j] = digit[i];
-
-    // remainder
-    j=shift%bits;
-    for (int i=n-1; i>=0; i--)
-    {
-      unsigned int temp = result.digit[i];
-      temp = temp<<j;
-      result.digit[i] = (unsigned short) (temp&bitmask);
-      temp = temp>>bits;
-      if (i+1<(int)n)
-        result.digit[i+1] = result.digit[i+1]|temp;
-    }
-
-    return result;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> bigunsignedint<k>::operator>> (int shift) const
-  {
-    bigunsignedint<k> result(0);
-
-    // multiples of bits
-    int j=shift/bits;
-    for (unsigned int i=0; i<n-j; i++)
-      result.digit[i] = digit[i+j];
-
-    // remainder
-    j=shift%bits;
-    for (unsigned int i=0; i<n; i++)
-    {
-      unsigned int temp = result.digit[i];
-      temp = temp<<(bits-j);
-      result.digit[i] = (unsigned short) ((temp&compbitmask)>>bits);
-      if (i>0)
-        result.digit[i-1] = result.digit[i-1] | (temp&bitmask);
-    }
-
-    return result;
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator!= (const bigunsignedint<k>& x) const
-  {
-    for (unsigned int i=0; i<n; i++)
-      if (digit[i]!=x.digit[i]) return true;
-    return false;
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator== (const bigunsignedint<k>& x) const
-  {
-    return !((*this)!=x);
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator< (const bigunsignedint<k>& x) const
-  {
-    for (int i=n-1; i>=0; i--)
-      if (digit[i]<x.digit[i]) return true;
-      else if (digit[i]>x.digit[i]) return false;
-    return false;
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator<= (const bigunsignedint<k>& x) const
-  {
-    for (int i=n-1; i>=0; i--)
-      if (digit[i]<x.digit[i]) return true;
-      else if (digit[i]>x.digit[i]) return false;
-    return true;
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator> (const bigunsignedint<k>& x) const
-  {
-    return !((*this)<=x);
-  }
-
-  template <int k>
-  inline bool bigunsignedint<k>::operator>= (const bigunsignedint<k>& x) const
-  {
-    return !((*this)<x);
-  }
-
-
-  template <int k>
-  inline bigunsignedint<k> operator+ (const bigunsignedint<k>& x, std::size_t y)
-  {
-    bigunsignedint<k> temp(y);
-    return x+temp;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator- (const bigunsignedint<k>& x, std::size_t y)
-  {
-    bigunsignedint<k> temp(y);
-    return x-temp;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator* (const bigunsignedint<k>& x, std::size_t y)
-  {
-    bigunsignedint<k> temp(y);
-    return x*temp;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator/ (const bigunsignedint<k>& x, std::size_t y)
-  {
-    bigunsignedint<k> temp(y);
-    return x/temp;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator% (const bigunsignedint<k>& x, std::size_t y)
-  {
-    bigunsignedint<k> temp(y);
-    return x%temp;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator+ (std::size_t x, const bigunsignedint<k>& y)
-  {
-    bigunsignedint<k> temp(x);
-    return temp+y;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator- (std::size_t x, const bigunsignedint<k>& y)
-  {
-    bigunsignedint<k> temp(x);
-    return temp-y;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator* (std::size_t x, const bigunsignedint<k>& y)
-  {
-    bigunsignedint<k> temp(x);
-    return temp*y;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator/ (std::size_t x, const bigunsignedint<k>& y)
-  {
-    bigunsignedint<k> temp(x);
-    return temp/y;
-  }
-
-  template <int k>
-  inline bigunsignedint<k> operator% (std::size_t x, const bigunsignedint<k>& y)
-  {
-    bigunsignedint<k> temp(x);
-    return temp%y;
-  }
-
-
-  /** @} */
-}
-
-namespace std
-{
-  template<class T> struct numeric_limits;
-
-  template<int k>
-  struct numeric_limits<Dune::bigunsignedint<k> >
-  {
-    static const bool is_specialized = true;
-
-    static Dune::bigunsignedint<k> min()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static Dune::bigunsignedint<k> max()
-    {
-      Dune::bigunsignedint<k> max_;
-      for(std::size_t i=0; i < Dune::bigunsignedint<k>::n; ++i)
-        max_.digit[i]=std::numeric_limits<unsigned short>::max();
-      return max_;
-    }
-
-
-    static const int digits = Dune::bigunsignedint<k>::bits *
-                              Dune::bigunsignedint<k>::n;
-    static const bool is_signed = false;
-    static const bool is_integer = true;
-    static const bool is_exact = true;
-    static const int radix = 2;
-
-    static Dune::bigunsignedint<k> epsilon()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static Dune::bigunsignedint<k> round_error()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static const int min_exponent = 0;
-    static const int min_exponent10 = 0;
-    static const int max_exponent = 0;
-    static const int max_exponent10 = 0;
-
-    static const bool has_infinity = false;
-    static const bool has_quiet_NaN = false;
-    static const bool has_signaling_NaN = false;
-
-    static const float_denorm_style has_denorm = denorm_absent;
-    static const bool has_denorm_loss = false;
-
-    static Dune::bigunsignedint<k> infinity() throw()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static Dune::bigunsignedint<k> quiet_NaN() throw()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static Dune::bigunsignedint<k> signaling_NaN() throw()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static Dune::bigunsignedint<k> denorm_min() throw()
-    {
-      return static_cast<Dune::bigunsignedint<k> >(0);
-    }
-
-    static const bool is_iec559 = false;
-    static const bool is_bounded = true;
-    static const bool is_modulo = true;
-
-    static const bool traps = false;
-    static const bool tinyness_before = false;
-    static const float_round_style round_style = round_toward_zero;
-
-  };
-
-}
-
-#endif
diff --git a/common/binaryfunctions.hh b/common/binaryfunctions.hh
deleted file mode 100644
index f5202ff2c..000000000
--- a/common/binaryfunctions.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_BINARYFUNCTIONS_HH
-#define DUNE_BINARYFUNCTIONS_HH
-
-#include <functional>
-#include <algorithm>
-
-namespace Dune
-{
-  template<typename Type>
-  struct Min
-    : std::binary_function<Type,Type,Type>
-  {
-    Type operator()(const Type& t1, const Type& t2) const
-    {
-      return std::min(t1,t2);
-    }
-  };
-
-  template<typename Type>
-  struct Max
-    : std::binary_function<Type,Type,Type>
-  {
-    Type operator()(const Type& t1, const Type& t2) const
-    {
-      return std::max(t1,t2);
-    }
-  };
-}
-
-#endif
diff --git a/common/bitsetvector.hh b/common/bitsetvector.hh
deleted file mode 100644
index e513e3e47..000000000
--- a/common/bitsetvector.hh
+++ /dev/null
@@ -1,596 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_BLOCK_BITFIELD_HH
-#define DUNE_BLOCK_BITFIELD_HH
-
-/** \file
-    \brief Efficient implementation of a dynamic array of static arrays of booleans
- */
-
-#include <vector>
-#include <bitset>
-#include <iostream>
-
-#include <dune/common/deprecated.hh>
-#include <dune/common/genericiterator.hh>
-#include <dune/common/exceptions.hh>
-
-namespace Dune {
-
-  template <int block_size, class Alloc> class BitSetVector;
-  template <int block_size, class Alloc> class BitSetVectorReference;
-
-  /**
-     \brief A proxy class that acts as a const reference to a single
-     bitset in a BitSetVector.
-
-     It contains a conversion to std::bitset and most of the
-     interface of const std::bitset.
-
-     \warning As this is only a proxy class, you can not get the
-     address of the bitset.
-   */
-  template <int block_size, class Alloc>
-  class BitSetVectorConstReference
-  {
-  protected:
-
-    typedef Dune::BitSetVector<block_size, Alloc> BitSetVector;
-    friend class Dune::BitSetVector<block_size, Alloc>;
-
-    BitSetVectorConstReference(const BitSetVector& blockBitField, int block_number) :
-      blockBitField(blockBitField),
-      block_number(block_number)
-    {};
-
-    //! hide assignment operator
-    BitSetVectorConstReference& operator=(const BitSetVectorConstReference & b);
-
-  public:
-
-    typedef std::bitset<block_size> bitset;
-
-    // bitset interface typedefs
-    typedef typename std::vector<bool, Alloc>::const_reference reference;
-    typedef typename std::vector<bool, Alloc>::const_reference const_reference;
-    typedef size_t size_type;
-
-    //! Returns a copy of *this shifted left by n bits.
-    bitset operator<<(size_type n) const
-    {
-      bitset b = *this;
-      b <<= n;
-      return b;
-    }
-
-    //! Returns a copy of *this shifted right by n bits.
-    bitset operator>>(size_type n) const
-    {
-      bitset b = *this;
-      b >>= n;
-      return b;
-    }
-
-    //! Returns a copy of *this with all of its bits flipped.
-    bitset operator~() const
-    {
-      bitset b = *this;
-      b.flip();
-      return b;
-    }
-
-    //! Returns block_size.
-    size_type size() const
-    {
-      return block_size;
-    }
-
-    //! Returns the number of bits that are set.
-    size_type count() const
-    {
-      size_type n = 0;
-      for(size_type i=0; i<block_size; ++i)
-        n += getBit(i);
-      return n;
-    }
-
-    //! Returns true if any bits are set.
-    bool any() const
-    {
-      return count();
-    }
-
-    //! Returns true if no bits are set.
-    bool none() const
-    {
-      return ! any();
-    }
-
-    //! Returns true if bit n is set.
-    bool test(size_type n) const
-    {
-      return getBit(n);
-    }
-
-    const_reference operator[](size_type i) const
-    {
-      return getBit(i);
-    }
-
-    //! cast to bitset
-    operator bitset() const
-    {
-      return blockBitField.getRepr(block_number);
-    }
-
-    //! Equality of reference and std::bitset
-    bool operator== (const bitset& bs) const
-    {
-      return equals(bs);
-    }
-
-    //! Equality of reference and other reference
-    bool operator== (const BitSetVectorConstReference& bs) const
-    {
-      return equals(bs);
-    }
-
-    //! Inequality of reference and std::bitset
-    bool operator!= (const bitset& bs) const
-    {
-      return ! equals(bs);
-    }
-
-    //! Inequality of reference and other reference
-    bool operator!= (const BitSetVectorConstReference& bs) const
-    {
-      return ! equals(bs);
-    }
-
-    /*!
-       missing operators:
-
-       - unsigned long to_ulong() const
-     */
-
-    friend std::ostream& operator<< (std::ostream& s, const BitSetVectorConstReference& v)
-    {
-      s << "(";
-      for(int i=0; i<block_size; ++i)
-        s << v[i];
-      s << ")";
-      return s;
-    }
-
-  protected:
-    const BitSetVector& blockBitField;
-    int block_number;
-
-    const_reference getBit(size_type i) const
-    {
-      return blockBitField.getBit(block_number,i);
-    }
-
-    template<class BS>
-    bool equals(const BS & bs) const
-    {
-      bool eq = true;
-      for(int i=0; i<block_size; ++i)
-        eq &= (getBit(i) == bs[i]);
-      return eq;
-    }
-
-  private:
-    /**
-       This is only a Proxy class, you can't get the address of the
-       object it references
-     */
-    void operator & ();
-  };
-
-  /**
-     \brief A proxy class that acts as a mutable reference to a
-     single bitset in a BitSetVector.
-
-     It contains an assignment operator from std::bitset.  It
-     inherits the const std::bitset interface provided by
-     BitSetVectorConstReference and adds most of the non-const
-     methods of std::bitset.
-
-     \warning As this is only a proxy class, you can not get the
-     address of the bitset.
-   */
-  template <int block_size, class Alloc>
-  class BitSetVectorReference : public BitSetVectorConstReference<block_size,Alloc>
-  {
-  protected:
-
-    typedef Dune::BitSetVector<block_size, Alloc> BitSetVector;
-    friend class Dune::BitSetVector<block_size, Alloc>;
-
-    typedef Dune::BitSetVectorConstReference<block_size,Alloc> BitSetVectorConstReference;
-
-    BitSetVectorReference(BitSetVector& blockBitField, int block_number) :
-      BitSetVectorConstReference(blockBitField, block_number),
-      blockBitField(blockBitField)
-    {};
-
-  public:
-    typedef std::bitset<block_size> bitset;
-
-    //! bitset interface typedefs
-    //! \{
-    //! A proxy class that acts as a reference to a single bit.
-    typedef typename std::vector<bool, Alloc>::reference reference;
-    //! A proxy class that acts as a const reference to a single bit.
-    typedef typename std::vector<bool, Alloc>::const_reference const_reference;
-    //! \}
-
-    //! size_type typedef (an unsigned integral type)
-    typedef size_t size_type;
-
-    //! Assignment from bool, sets each bit in the bitset to b
-    BitSetVectorReference& operator=(bool b)
-    {
-      for(int i=0; i<block_size; ++i)
-        getBit(i) = b;
-
-      return (*this);
-    }
-
-    //! Assignment from bitset
-    BitSetVectorReference& operator=(const bitset & b)
-    {
-      for(int i=0; i<block_size; ++i)
-        getBit(i) = b[i];
-
-      return (*this);
-    }
-
-    //! Assignment from BitSetVectorConstReference
-    BitSetVectorReference& operator=(const BitSetVectorConstReference & b)
-    {
-      for(int i=0; i<block_size; ++i)
-        getBit(i) = b[i];
-
-      return (*this);
-    }
-
-    //! Assignment from BitSetVectorReference
-    BitSetVectorReference& operator=(const BitSetVectorReference & b)
-    {
-      for(int i=0; i<block_size; ++i)
-        getBit(i) = b.getBit(i);
-
-      return (*this);
-    }
-
-    //! Bitwise and.
-    BitSetVectorReference& operator&=(const BitSetVectorConstReference& x)
-    {
-      for (size_type i=0; i<block_size; i++)
-        set(i, getBit(i) & x.getBit(i));
-      return *this;
-    }
-
-    //! Bitwise inclusive or.
-    BitSetVectorReference& operator|=(const BitSetVectorConstReference& x)
-    {
-      for (size_type i=0; i<block_size; i++)
-        set(i, getBit(i) | x.getBit(i));
-      return *this;
-    }
-
-    //! Bitwise exclusive or.
-    BitSetVectorReference& operator^=(const BitSetVectorConstReference& x)
-    {
-      for (size_type i=0; i<block_size; i++)
-        set(i, getBit(i) ^ x.getBit(i));
-      return *this;
-    }
-
-    //! Left shift.
-    BitSetVectorReference& operator<<=(size_type n)
-    {
-      for (size_type i=0; i<block_size-n; i++)
-        set(i, getBit(i+n));
-      return *this;
-    }
-
-    //! Right shift.
-    BitSetVectorReference& operator>>=(size_type n)
-    {
-      for (size_type i=0; i<block_size-n; i++)
-        set(i+n, getBit(i));
-      return *this;
-    }
-
-    // Sets every bit.
-    BitSetVectorReference& set()
-    {
-      for (size_type i=0; i<block_size; i++)
-        set(i);
-      return *this;
-    }
-
-    //! Flips the value of every bit.
-    BitSetVectorReference& flip()
-    {
-      for (size_type i=0; i<block_size; i++)
-        flip(i);
-      return *this;
-    }
-
-    //! Clears every bit.
-    BitSetVectorReference& reset()
-    {}
-
-    //! Sets bit n if val is nonzero, and clears bit n if val is zero.
-    BitSetVectorReference& set(size_type n, int val = 1)
-    {
-      getBit(n) = val;
-      return *this;
-    }
-
-    //! Clears bit n.
-    BitSetVectorReference& reset(size_type n)
-    {
-      set(n, false);
-      return *this;
-    }
-
-    //! Flips bit n.
-    BitSetVectorReference& flip(size_type n)
-    {
-      getBit(n).flip();
-      return *this;
-    }
-
-    using BitSetVectorConstReference::operator[];
-
-    reference operator[](size_type i)
-    {
-      return getBit(i);
-    }
-
-  protected:
-    BitSetVector& blockBitField;
-
-    using BitSetVectorConstReference::getBit;
-
-    reference getBit(size_type i)
-    {
-      return blockBitField.getBit(this->block_number,i);
-    }
-  };
-
-  /**
-     typetraits for BitSetVectorReference
-   */
-  template<int block_size, class Alloc>
-  struct const_reference< BitSetVectorReference<block_size,Alloc> >
-  {
-    typedef BitSetVectorConstReference<block_size,Alloc> type;
-  };
-
-  template<int block_size, class Alloc>
-  struct const_reference< BitSetVectorConstReference<block_size,Alloc> >
-  {
-    typedef BitSetVectorConstReference<block_size,Alloc> type;
-  };
-
-  template<int block_size, class Alloc>
-  struct mutable_reference< BitSetVectorReference<block_size,Alloc> >
-  {
-    typedef BitSetVectorReference<block_size,Alloc> type;
-  };
-
-  template<int block_size, class Alloc>
-  struct mutable_reference< BitSetVectorConstReference<block_size,Alloc> >
-  {
-    typedef BitSetVectorReference<block_size,Alloc> type;
-  };
-
-  /**
-     \brief A dynamic %array of blocks of booleans
-   */
-  template <int block_size, class Allocator=std::allocator<bool> >
-  class BitSetVector : private std::vector<bool, Allocator>
-  {
-    /** \brief The implementation class: an unblocked bitfield */
-    typedef std::vector<bool, Allocator> BlocklessBaseClass;
-
-  public:
-    //! container interface typedefs
-    //! \{
-
-    /** \brief Type of the values stored by the container */
-    typedef std::bitset<block_size> value_type;
-
-    /** \brief Reference to a small block of bits */
-    typedef BitSetVectorReference<block_size,Allocator> reference;
-
-    /** \brief Const reference to a small block of bits */
-    typedef BitSetVectorConstReference<block_size,Allocator> const_reference;
-
-    /** \brief Pointer to a small block of bits */
-    typedef BitSetVectorReference<block_size,Allocator>* pointer;
-
-    /** \brief Const pointer to a small block of bits */
-    typedef BitSetVectorConstReference<block_size,Allocator>* const_pointer;
-
-    /** \brief size type */
-    typedef typename std::vector<bool, Allocator>::size_type size_type;
-
-    /** \brief The type of the allocator */
-    typedef Allocator allocator_type;
-    //! \}
-
-    //! iterators
-    //! \{
-    typedef Dune::GenericIterator<BitSetVector<block_size,Allocator>, value_type, reference, std::ptrdiff_t, ForwardIteratorFacade> iterator;
-    typedef Dune::GenericIterator<const BitSetVector<block_size,Allocator>, const value_type, const_reference, std::ptrdiff_t, ForwardIteratorFacade> const_iterator;
-    //! \}
-
-    //! Returns a iterator pointing to the beginning of the vector.
-    iterator begin(){
-      return iterator(*this, 0);
-    }
-
-    //! Returns a const_iterator pointing to the beginning of the vector.
-    const_iterator begin() const {
-      return const_iterator(*this, 0);
-    }
-
-    //! Returns an iterator pointing to the end of the vector.
-    iterator end(){
-      return iterator(*this, size());
-    }
-
-    //! Returns a const_iterator pointing to the end of the vector.
-    const_iterator end() const {
-      return const_iterator(*this, size());
-    }
-
-    //! Default constructor
-    BitSetVector() :
-      BlocklessBaseClass()
-    {}
-
-    //! Construction from an unblocked bitfield
-    BitSetVector(const BlocklessBaseClass& blocklessBitField) :
-      BlocklessBaseClass(blocklessBitField)
-    {
-      if (blocklessBitField.size()%block_size != 0)
-        DUNE_THROW(RangeError, "Vector size is not a multiple of the block size!");
-    }
-
-    /** Constructor with a given length
-        \param n Number of blocks
-     */
-    explicit BitSetVector(int n) :
-      BlocklessBaseClass(n*block_size)
-    {}
-
-    //! Constructor which initializes the field with true or false
-    BitSetVector(int n, bool v) :
-      BlocklessBaseClass(n*block_size,v)
-    {}
-
-    //! Erases all of the elements.
-    void clear()
-    {
-      BlocklessBaseClass::clear();
-    }
-
-    //! Resize field
-    void resize(int n, bool v = bool())
-    {
-      BlocklessBaseClass::resize(n*block_size, v);
-    }
-
-    /** \brief Return the number of blocks */
-    int size() const
-    {
-      return BlocklessBaseClass::size()/block_size;
-    }
-
-    //! Sets all entries to <tt> true </tt>
-    void setAll() {
-      this->assign(BlocklessBaseClass::size(), true);
-    }
-
-    //! Sets all entries to <tt> false </tt>
-    void unsetAll() {
-      this->assign(BlocklessBaseClass::size(), false);
-    }
-
-    /** \brief Return reference to i-th block */
-    reference operator[](int i)
-    {
-      return reference(*this, i);
-    }
-
-    /** \brief Return const reference to i-th block */
-    const_reference operator[](int i) const
-    {
-      return const_reference(*this, i);
-    }
-
-    /** \brief Return reference to last block */
-    reference back()
-    {
-      return reference(*this, size()-1);
-    }
-
-    /** \brief Return const reference to last block */
-    const_reference back() const
-    {
-      return const_reference(*this, size()-1);
-    }
-
-    //! Returns the total number of set bits
-    size_type nSetBits() const DUNE_DEPRECATED
-    {
-      return count();
-    }
-
-    //! Returns the number of set bits, while each block is masked with 1<<i
-    int nSetBits(int i) const DUNE_DEPRECATED
-    {
-      return countmasked(i);
-    }
-
-    //! Returns the number of bits that are set.
-    size_type count() const
-    {
-      size_type n = 0;
-      for(size_type i=0; i<BlocklessBaseClass::size(); ++i)
-        n += BlocklessBaseClass::operator[](i);
-      return n;
-    }
-
-    //! Returns the number of set bits, while each block is masked with 1<<i
-    int countmasked(int j) const
-    {
-      size_type n = 0;
-      size_type blocks = size();
-      for(size_type i=0; i<blocks; ++i)
-        n += getBit(i,j);
-      return n;
-    }
-
-    //! Send bitfield to an output stream
-    friend std::ostream& operator<< (std::ostream& s, const BitSetVector& v)
-    {
-      for (size_t i=0; i<v.size(); i++)
-        s << v[i] << "  ";
-      return s;
-    }
-
-  private:
-
-    // get a prepresentation as value_type
-    value_type getRepr(int i) const
-    {
-      value_type bits;
-      for(int j=0; j<block_size; ++j)
-        bits.set(j, getBit(i,j));
-      return bits;
-    }
-
-    typename std::vector<bool>::reference getBit(size_type i, size_type j) {
-      return BlocklessBaseClass::operator[](i*block_size+j);
-    }
-
-    typename std::vector<bool>::const_reference getBit(size_type i, size_type j) const {
-      return BlocklessBaseClass::operator[](i*block_size+j);
-    }
-
-    friend class BitSetVectorReference<block_size,Allocator>;
-    friend class BitSetVectorConstReference<block_size,Allocator>;
-  };
-
-}  // namespace Dune
-
-#endif
diff --git a/common/collectivecommunication.hh b/common/collectivecommunication.hh
deleted file mode 100644
index a9acd95c6..000000000
--- a/common/collectivecommunication.hh
+++ /dev/null
@@ -1,212 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_COLLECTIVECOMMUNICATION_HH
-#define DUNE_COLLECTIVECOMMUNICATION_HH
-
-#include <iostream>
-#include <complex>
-#include <algorithm>
-
-#include "exceptions.hh"
-
-/*! \defgroup ParallelCommunication Parallel Communication
-   \ingroup Common
-
-   Dune offers an abstraction to the basic methods of parallel
-   communication. It allows to switch parallel features on and of,
-   without changing the code.
-
- */
-
-namespace Dune
-{
-  /*! @brief Collective communication interface and sequential default implementation
-
-     CollectiveCommunication offers an abstraction to the basic methods
-     of parallel communication, following the message-passing
-     paradigm. It allows to switch parallel features on and of, without
-     changing the code. Currently only MPI and sequential code are
-     supported.
-
-     A CollectiveCommunication object is returned by all grids (also
-     the sequential ones) in order to allow code to be written in
-     a transparent way for sequential and parallel grids.
-
-     This class provides a default implementation for sequential grids.
-     The number of processes involved is 1, any sum, maximum, etc. returns
-     just its input argument and so on.
-
-     In specializations one can implement the real thing using appropriate
-     communication functions, e.g. there exists an implementation using
-     the Message Passing %Interface (MPI), see Dune::CollectiveCommunication<MPI_Comm>.
-
-     Moreover, the communication subsystem used by an implementation
-     is not visible in the interface, i.e. Dune grid implementations
-     are not restricted to MPI.
-
-     \ingroup ParallelCommunication
-   */
-  template<typename C>
-  class CollectiveCommunication
-  {
-  public:
-    //! Construct default object
-    CollectiveCommunication()
-    {}
-    CollectiveCommunication (const C&)
-    {}
-
-    //! Return rank, is between 0 and size()-1
-    int rank () const
-    {
-      return 0;
-    }
-
-    //! Number of processes in set, is greater than 0
-    int size () const
-    {
-      return 1;
-    }
-
-    /** @brief  Compute the sum of the argument over all processes and
-            return the result in every process. Assumes that T has an operator+
-     */
-    template<typename T>
-    T sum (T& in) const     // MPI does not know about const :-(
-    {
-      return in;
-    }
-
-    /** @brief Compute the sum over all processes for each component of an array and return the result
-            in every process. Assumes that T has an operator+
-     */
-    template<typename T>
-    int sum (T* inout, int len) const
-    {
-      return 0;
-    }
-
-    /** @brief  Compute the product of the argument over all processes and
-            return the result in every process. Assumes that T has an operator*
-     */
-    template<typename T>
-    T prod (T& in) const     // MPI does not know about const :-(
-    {
-      return in;
-    }
-
-    /** @brief Compute the product over all processes
-            for each component of an array and return the result
-            in every process. Assumes that T has an operator*
-     */
-    template<typename T>
-    int prod (T* inout, int len) const
-    {
-      return 0;
-    }
-
-    /** @brief  Compute the minimum of the argument over all processes and
-            return the result in every process. Assumes that T has an operator<
-     */
-    template<typename T>
-    T min (T& in) const     // MPI does not know about const :-(
-    {
-      return in;
-    }
-
-    /** @brief Compute the minimum over all processes
-            for each component of an array and return the result
-            in every process. Assumes that T has an operator<
-     */
-    template<typename T>
-    int min (T* inout, int len) const
-    {
-      return 0;
-    }
-
-    /** @brief  Compute the maximum of the argument over all processes and
-            return the result in every process. Assumes that T has an operator<
-     */
-    template<typename T>
-    T max (T& in) const     // MPI does not know about const :-(
-    {
-      return in;
-    }
-
-    /** @brief Compute the maximum over all processes
-            for each component of an array and return the result
-            in every process. Assumes that T has an operator<
-     */
-    template<typename T>
-    int max (T* inout, int len) const
-    {
-      return 0;
-    }
-
-    /** @brief Wait until all processes have arrived at this point in the program.
-     */
-    int barrier () const
-    {
-      return 0;
-    }
-
-    /** @brief Distribute an array from the process with rank root to all other processes
-     */
-    template<typename T>
-    int broadcast (T* inout, int len, int root) const
-    {
-      return 0;
-    }
-
-    /** @brief  Each process sends its in array of length len to the root process
-            (including the root itself). In the root process these arrays are stored in rank
-            order in the out array which must have size len * number of processes.
-     */
-    template<typename T>
-    int gather (T* in, T* out, int len, int root) const     // note out must have same size as in
-    {
-      for (int i=0; i<len; i++)
-        out[i] = in[i];
-      return 0;
-    }
-
-    /**
-     * @brief Compute something over all processes
-     * for each component of an array and return the result
-     * in every process.
-     *
-     * The template parameter BinaryFunction is the type of
-     * the binary function to use for the computation
-     *
-     * @param inout The array to compute on.
-     * @param len The number of components in the array
-     */
-    template<typename BinaryFunction, typename Type>
-    int allreduce(Type* inout, int len) const
-    {
-      return 0;
-    }
-
-    /**
-     * @brief Compute something over all processes
-     * for each component of an array and return the result
-     * in every process.
-     *
-     * The template parameter BinaryFunction is the type of
-     * the binary function to use for the computation
-     *
-     * @param in The array to compute on.
-     * @param out The array to store the results in.
-     * @param len The number of components in the array
-     */
-    template<typename BinaryFunction, typename Type>
-    void allreduce(Type* in, Type* out, int len) const
-    {
-      std::copy(in, in+len, out);
-      return 0;
-    }
-
-  };
-}
-
-#endif
diff --git a/common/configparser.cc b/common/configparser.cc
deleted file mode 100644
index dad996f85..000000000
--- a/common/configparser.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include "configparser.hh"
-
-#include <cstdlib>
-
-#include <string>
-#include <sstream>
-#include <fstream>
-#include <set>
-
-#include <dune/common/exceptions.hh>
-
-using namespace Dune;
-using namespace std;
-
-ConfigParser::ConfigParser()
-{}
-
-void ConfigParser::parseFile(std::string file)
-{
-  ifstream in(file.c_str());
-
-  if (!in)
-    DUNE_THROW(IOError, "Could not open configuration file " << file);
-
-  string prefix;
-  set<string> keysInFile;
-  while(!in.eof())
-  {
-    string line;
-    getline(in, line);
-    line = ltrim(line);
-    switch (line[0]) {
-    case '#' :
-      break;
-    case '[' :
-      line = rtrim(line);
-      if (line[line.length()-1] == ']')
-      {
-        prefix = rtrim(ltrim(line.substr(1, line.length()-2)));
-        if (prefix != "")
-          prefix += ".";
-      }
-      break;
-    default :
-      string::size_type mid = line.find("=");
-      if (mid != string::npos)
-      {
-        string key = prefix+rtrim(ltrim(line.substr(0, mid)));
-        string value = ltrim(line.substr(mid+1));
-
-        if (value.length()>0)
-        {
-          // handle quoted strings
-          if ((value[0]=='\'')or (value[0]=='"'))
-          {
-            char quote = value[0];
-            value=value.substr(1);
-            while (*(rtrim(value).rbegin())!=quote)
-            {
-              if (not in.eof())
-              {
-                string l;
-                getline(in, l);
-                value = value+"\n"+l;
-              }
-              else
-                value = value+quote;
-            }
-            value = rtrim(value);
-            value = value.substr(0,value.length()-1);
-          }
-          else
-            value = rtrim(value);
-        }
-
-        if (keysInFile.count(key) != 0)
-          DUNE_THROW(Exception, "Key '" << key << "' appears twice in file '" << file << "' !");
-        else
-        {
-          (*this)[key] = value;
-          keysInFile.insert(key);
-        }
-      }
-      break;
-    }
-  }
-
-  in.close();
-  return;
-}
-
-
-void ConfigParser::parseCmd(int argc, char* argv [])
-{
-  string v = "";
-  string k = "";
-
-  for(int i=1; i<argc; i++)
-  {
-    string s(argv[i]);
-
-    if ((argv[i][0]=='-') && (argv[i][1]!='\000'))
-    {
-      k = argv[i]+1;
-      continue;
-    }
-    else
-      (*this)[k] = argv[i];
-  }
-
-  return;
-}
-
-void ConfigParser::report() const
-{
-  report("");
-}
-
-void ConfigParser::report(const string prefix) const
-{
-  typedef map<string, string>::const_iterator ValueIt;
-  ValueIt vit = values.begin();
-  ValueIt vend = values.end();
-
-  for(; vit!=vend; ++vit)
-    cout << prefix + vit->first << " = \"" << vit->second << "\"" << endl;
-
-  typedef map<string, ConfigParser>::const_iterator SubIt;
-  SubIt sit = subs.begin();
-  SubIt send = subs.end();
-  for(; sit!=send; ++sit)
-  {
-    cout << "[ " << prefix + sit->first << " ]" << endl;
-    (sit->second).report(prefix + sit->first + ".");
-  }
-}
-
-bool ConfigParser::hasKey(const string& key)
-{
-  string::size_type dot = key.find(".");
-
-  if (dot != string::npos)
-  {
-    string prefix = key.substr(0,dot);
-    if (subs.count(prefix) == 0)
-      return false;
-
-    ConfigParser& s = sub(prefix);
-    return s.hasKey(key.substr(dot+1));
-  }
-  else
-    return (values.count(key) != 0);
-}
-
-bool ConfigParser::hasSub(const string& key)
-{
-  string::size_type dot = key.find(".");
-
-  if (dot != string::npos)
-  {
-    string prefix = key.substr(0,dot);
-    if (subs.count(prefix) == 0)
-      return false;
-
-    ConfigParser& s = sub(prefix);
-    return s.hasSub(key.substr(dot+1));
-  }
-  else
-    return (subs.count(key) != 0);
-}
-
-ConfigParser& ConfigParser::sub(const string& key)
-{
-  string::size_type dot = key.find(".");
-
-  if (dot != string::npos)
-  {
-    ConfigParser& s = sub(key.substr(0,dot));
-    return s.sub(key.substr(dot+1));
-  }
-  else
-    return subs[key];
-}
-
-string& ConfigParser::operator[] (const string& key)
-{
-  string::size_type dot = key.find(".");
-
-  if (dot != string::npos)
-  {
-    if (not (hasSub(key.substr(0,dot))))
-      subKeys.push_back(key.substr(0,dot));
-    ConfigParser& s = sub(key.substr(0,dot));
-    return s[key.substr(dot+1)];
-  }
-  else
-  {
-    if (not (hasKey(key)))
-      valueKeys.push_back(key);
-    return values[key];
-  }
-}
-
-string ConfigParser::get(const string& key, const string& defaultValue)
-{
-  if (hasKey(key))
-    return (*this)[key];
-  else
-    return defaultValue;
-}
-
-string ConfigParser::get(const string& key, const char* defaultValue)
-{
-  if (hasKey(key))
-    return (*this)[key];
-  else
-    return defaultValue;
-}
-
-
-int ConfigParser::get(const string& key, int defaultValue)
-{
-  stringstream stream;
-  stream << defaultValue;
-  string ret = get(key, stream.str());
-
-  return atoi(ret.c_str());
-}
-
-double ConfigParser::get(const string& key, double defaultValue)
-{
-  stringstream stream;
-  stream << defaultValue;
-  string ret = get(key, stream.str());
-
-  return atof(ret.c_str());
-}
-
-bool ConfigParser::get(const string& key, bool defaultValue)
-{
-  stringstream stream;
-  if (defaultValue)
-    stream << 1;
-  else
-    stream << 0;
-
-  string ret = get(key, stream.str());
-
-  return (atoi(ret.c_str()) !=0 );
-}
-
-// This namespace here is needed to make the code compile...
-namespace Dune {
-
-  template<>
-  string ConfigParser::get<string>(const string& key)
-  {
-    if (hasKey(key))
-      return (*this)[key];
-
-    DUNE_THROW(RangeError, "Key '" << key << "' not found in parameter file!");
-  }
-
-  template<>
-  int ConfigParser::get<int>(const string& key)
-  {
-    if (hasKey(key))
-      return std::atoi((*this)[key].c_str());
-
-    DUNE_THROW(RangeError, "Key '" << key << "' not found in parameter file!");
-  }
-
-  template<>
-  double ConfigParser::get<double>(const string& key)
-  {
-    if (hasKey(key))
-      return std::atof((*this)[key].c_str());
-
-    DUNE_THROW(RangeError, "Key '" << key << "' not found in parameter file!");
-  }
-
-  template<>
-  bool ConfigParser::get<bool>(const string& key)
-  {
-    if (hasKey(key))
-      return (std::atoi((*this)[key].c_str()) !=0 );
-
-    DUNE_THROW(RangeError, "Key '" << key << "' not found in parameter file!");
-  }
-
-
-}  // end namespace Dune
-
-string ConfigParser::ltrim(const string& s)
-{
-  std::size_t firstNonWS = s.find_first_not_of(" \t\n\r");
-
-  if (firstNonWS!=string::npos)
-    return s.substr(firstNonWS);
-  return string();
-}
-
-string ConfigParser::rtrim(const string& s)
-{
-  std::size_t lastNonWS = s.find_last_not_of(" \t\n\r");
-
-  if (lastNonWS!=string::npos)
-    return s.substr(0, lastNonWS+1);
-  return string();
-}
-
-const ConfigParser::KeyVector& ConfigParser::getValueKeys() const
-{
-  return valueKeys;
-}
-
-const ConfigParser::KeyVector& ConfigParser::getSubKeys() const
-{
-  return subKeys;
-}
diff --git a/common/configparser.hh b/common/configparser.hh
deleted file mode 100644
index f4d8f0e58..000000000
--- a/common/configparser.hh
+++ /dev/null
@@ -1,239 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_CONFIGPARSER_HH
-#define DUNE_CONFIGPARSER_HH
-
-
-#include <map>
-#include <vector>
-#include <string>
-#include <iostream>
-
-namespace Dune {
-
-  /** \brief Parser for hierarchical configuration files
-   * \ingroup Common
-   *
-   * This class parses config files into a hierarchical structure.
-   * Config files should look like this
-   *
-     \verbatim
-   # this file configures fruit colors in fruitsalad
-
-
-   ##these are no fruit but could also appear in fruit salad
-     honeydewmelon = yellow
-     watermelon = green
-
-     fruit.tropicalfruit.orange = orange
-
-     [fruit]
-     strawberry = red
-     pomegranate = red
-
-     [fruit.pipfruit]
-     apple = green/red/yellow
-     pear = green
-
-     [fruit.stonefruit]
-     cherry = red
-     plum = purple
-
-     \endverbatim
-   *
-   *
-   * If a '[prefix]' statement appears all following entries use this prefix
-   * until the next '[prefix]' statement. Fruitsalads for example contain:
-     \verbatim
-     honeydewmelon = yellow
-     fruit.tropicalfruit.orange = orange
-     fruit.pipfruit.apple = green/red/yellow
-     fruit.stonefruit.cherry = red
-     \endverbatim
-   *
-   * All keys with a common 'prefix.' belong to the same substructure called 'prefix'.
-   * Leading and trailing spaces and tabs are removed from the values unless you use
-   * single or double quotes around them.
-   * Using single or double quotes you can also have multiline values.
-   *
-   */
-  class ConfigParser
-  {
-  public:
-
-    typedef std::vector<std::string> KeyVector;
-
-    /** \brief Create new ConfigParser
-     */
-    ConfigParser();
-
-
-    /** \brief parse file
-     *
-     * Parses file with given name and build hierarchical config structure.
-     *
-     * \param file filename
-     */
-    void parseFile(std::string file);
-
-
-    /** \brief parse command line
-     *
-     * Parses command line options and build hierarchical config structure.
-     *
-     * \param argc arg count
-     * \param argv arg values
-     */
-    void parseCmd(int argc, char* argv []);
-
-
-    /** \brief test for key
-     *
-     * Tests wether given key exists.
-     *
-     * \param key key name
-     * \return true if key exists in structure, otherwise false
-     */
-    bool hasKey(const std::string& key);
-
-
-    /** \brief test for substructure
-     *
-     * Tests wether given substructure exists.
-     *
-     * \param sub substructure name
-     * \return true if substructure exists in structure, otherwise false
-     */
-    bool hasSub(const std::string& sub);
-
-
-    /** \brief get value reference for key
-     *
-     * Returns refference to value for given key name.
-     * This creates the key, if not existent.
-     *
-     * \param key key name
-     * \return reference to coresponding value
-     */
-    std::string& operator[] (const std::string& key);
-
-
-    /** \brief print structure to std::cout
-     */
-    void report() const;
-
-
-    /** \brief print distinct substructure to std::cout
-     *
-     * Prints all entries with given prefix.
-     *
-     * \param prefix for key and substructure names
-     */
-    void report(const std::string prefix) const;
-
-
-    /** \brief get substructure by name
-     *
-     * \param sub substructure name
-     * \return reference to substructure
-     */
-    ConfigParser& sub(const std::string& sub);
-
-
-    /** \brief get value as string
-     *
-     * Returns pure string value for given key.
-     *
-     * \param key key name
-     * \param defaultValue default if key does not exist
-     * \return value as string
-     */
-    std::string get(const std::string& key, const std::string& defaultValue);
-
-    /** \brief get value as string
-     *
-     * Returns pure string value for given key.
-     *
-     * \todo This is a hack so get("my_key", "xyz") compiles
-     * (without this method "xyz" resolves to bool instead of std::string)
-     * \param key key name
-     * \param defaultValue default if key does not exist
-     * \return value as string
-     */
-    std::string get(const std::string& key, const char* defaultValue);
-
-
-    /** \brief get value as int
-     *
-     * Returns value for given key interpreted as int.
-     *
-     * \param key key name
-     * \param defaultValue default if key does not exist
-     * \return value as int
-     */
-    int get(const std::string& key, int defaultValue);
-
-
-    /** \brief get value as double
-     *
-     * Returns value for given key interpreted as double.
-     *
-     * \param key key name
-     * \param defaultValue default if key does not exist
-     * \return value as double
-     */
-    double get(const std::string& key, double defaultValue);
-
-
-    /** \brief get value as bool
-     *
-     * Returns value for given key interpreted as bool.
-     *
-     * \param key key name
-     * \param defaultValue default if key does not exist
-     * \return value as bool, false if values = '0', true if value = '1'
-     */
-    bool get(const std::string& key, bool defaultValue);
-
-    /** \brief Get value
-     *
-     * \param T Type of the value
-     * \param key Key name
-     * \throws RangeError if key does not exist
-     * \throws NotImplemented Type is not supported
-     * \return value as T
-     */
-    template <class T>
-    T get(const std::string& key);
-
-    /** \brief get value keys
-     *
-     * Returns a vector of all keys associated to (key,values) entries in order of appearance
-     *
-     * \return reference to entry vector
-     */
-    const KeyVector& getValueKeys() const;
-
-
-    /** \brief get substructure keys
-     *
-     * Returns a vector of all keys associated to (key,substructure) entries in order of appearance
-     *
-     * \return reference to entry vector
-     */
-    const KeyVector& getSubKeys() const;
-
-  private:
-    KeyVector valueKeys;
-    KeyVector subKeys;
-
-    std::map<std::string, std::string> values;
-    std::map<std::string, ConfigParser> subs;
-    static std::string ltrim(const std::string& s);
-    static std::string rtrim(const std::string& s);
-  };
-} // end namespace dune
-
-
-
-#endif
diff --git a/common/debugstream.hh b/common/debugstream.hh
deleted file mode 100644
index fd39dfa06..000000000
--- a/common/debugstream.hh
+++ /dev/null
@@ -1,436 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_DEBUGSTREAM_HH
-#define DUNE_DEBUGSTREAM_HH
-
-#include <iostream>
-#include <stack>
-
-#include <dune/common/exceptions.hh>
-
-namespace Dune {
-
-  /*! \defgroup DebugOut Debug output
-     \ingroup Common
-
-     The debug output is implemented by instances of DebugStream which
-     provides the following features:
-
-     - output-syntax in the standard ostream-notation
-     - output can be totally deactivated depending on template parameters
-     - streams with active output can be deactivated during runtime
-     - redirecting to std::ostream or other DebugStream s during runtime
-     - stack oriented state
-
-     The Dune-components should use the streams explained in \ref StdStreams
-     for output so that applications may redirect the output globally.
-
-     Changes in runtime are provided by three sets of methods:
-
-     - push()/pop() sets new activation flag or restore old setting
-     - attach()/detach() redirects output to a different std::ostream or restore old stream
-     - tie()/untie() redirects output through another DebugStream. If the state of the master stream changes (activation or output-stream) it is changed in the tied stream as well
-
-     The first methods implement a full stack whereas tie() is a bit
-     different: though a tied stream may be (de)activated via
-     push()/pop() you cannot attach() or detach() an output. You'll need
-     to change the master stream instead.
-
-     \section DebugAppl Applications
-
-     Applications using the Dune-library should create an independent set
-     of DebugStreams so that the debug levels can be changed separately.
-     Example:
-
-     \code
-     static const Dune::DebugLevel APPL_MINLEVEL = 3;
-
-     Dune::DebugStream<1, APPL_MINLEVEL> myverbose;
-     Dune::DebugStream<2, APPL_MINLEVEL> myinfo;
-     Dune::DebugStream<3, APPL_MINLEVEL> mywarn;
-     \endcode
-
-     This code creates three streams of which only the last one really
-     creates output. The output-routines of the other streams vanish in
-     optimized executables.
-
-     You can use the common_bits-Template to switch to a policy using bitflags:
-
-     \code
-     enum { APPL_CORE = 1, APPL_IO = 2, APPL_GRAPHICS = 4};
-
-     static const Dune::DebugLevel APPL_DEBUG_MASK = APPL_CORE | APPL_GRAPHICS;
-     static const Dune::DebugLevel APPL_ACTIVE_MASK = 0xff;
-
-     Dune::DebugStream<APPL_CORE, APPL_DEBUG_MASK, APPL_ACTIVE_MASK, Dune::common_bits> coreout;
-     Dune::DebugStream<APPL_IO, APPL_DEBUG_MASK, APPL_ACTIVE_MASK, Dune::common_bits> ioout;
-     Dune::DebugStream<APPL_GRAPHICS, APPL_DEBUG_MASK, APPL_ACTIVE_MASK, Dune::common_bits> graphout;
-     \endcode
-
-     Applications that wish to redirect the \ref StdStreams through their
-     private streams may use the tie()-mechanism:
-
-     \code
-     // initialize streams like above
-
-     Dune::dwarn.tie(coreout);
-
-     // ... Dune-output to dwarn will be directed through coreout ...
-
-     Dune::dwarn.untie();
-     \endcode
-
-     Keep in mind to untie() a stream before the tied stream is destructed.
-
-     An alternative is to attach() an output stream defined by the application:
-
-     \code
-     std::ofstream mylog("application.log");
-
-     Dune::dwarn.attach(mylog);
-     \endcode
-   */
-  /**
-     \addtogroup DebugOut
-     \{
-   */
-  /*! \file
-
-     This file implements the class DebugStream to support output in a
-     variety of debug levels. Additionally, template parameters control
-     if the output operation is really performed so that unused debug
-     levels can be deactivated
-
-   */
-
-
-  /*! \brief Type for debug levels.
-
-     Only positive values allowed
-   */
-  typedef unsigned int DebugLevel;
-
-  /*!
-
-     \brief Greater or equal template test.
-
-     value is false if current is below the threshold, true otherwise
-
-     This is the default struct to control the activation policy of
-     DebugStream and deactivates output below the threshold
-   */
-  template <DebugLevel current, DebugLevel threshold>
-  struct greater_or_equal {
-    static const bool value = (current >= threshold);
-  };
-
-  /*!
-     \brief Test if debug level equals zero.
-
-     data component value is true if template parameter is non-zero
-
-     this template is used to implement the common_bits template
-   */
-  template <DebugLevel x>
-  struct notzero {
-    static const bool value = true;
-  };
-
-  template < >
-  struct notzero<0> {
-    static const bool value = false;
-  };
-
-  /*! \brief activate if current and mask have common bits switched on.
-
-     This template implements an alternative strategy to activate or
-     deactivate a DebugStream. Keep in mind to number your streams as
-     powers of two if using this template
-   */
-  template <DebugLevel current, DebugLevel mask>
-  struct common_bits {
-    static const bool value = notzero<current & mask>::value;
-  };
-
-
-  //! \brief standard exception for the debugstream
-  class DebugStreamError : public IOError {};
-
-  class StreamWrap {
-  public:
-    StreamWrap(std::ostream& _out) : out(_out) { };
-    std::ostream& out;
-    StreamWrap *next;
-  };
-
-  //! \brief Intermediate class to implement tie-operation of DebugStream
-  class DebugStreamState {
-    // !!! should be protected somehow but that won't be easy
-  public:
-    //! \brief current output stream and link to possibly pushed old output streams
-    StreamWrap* current;
-
-    //! \brief flag to switch output during runtime
-    bool _active;
-
-    //! \brief are we tied to another DebugStream?
-    bool _tied;
-
-    //! \brief how many streams are tied to this state
-    unsigned int _tied_streams;
-  };
-
-  /*!
-     \brief Generic class to implement debug output streams
-
-     The main function of a DebugStream is to provide output in a
-     standard ostream fashion that is fully deactivated if the level of
-     the stream does not meet the current requirements. More information in \ref DebugOut
-
-     \param thislevel this level
-     \param dlevel level needed for any output to happen
-     \param alevel level needed to switch activation flag on
-     \param activator template describing the activation policy
-
-     \todo Fix visibility of internal data
-   */
-  template <DebugLevel thislevel = 1,
-      DebugLevel dlevel = 1,
-      DebugLevel alevel = 1,
-      template<DebugLevel, DebugLevel> class activator = greater_or_equal>
-  class DebugStream : public DebugStreamState {
-  public:
-    /*! \brief Create a DebugStream and set initial output stream
-
-       during runtime another stream can be attach()ed, however the
-       initial stream may not be detach()ed.
-     */
-    DebugStream(std::ostream& out = std::cerr) {
-      // start a new list of streams
-      current = new StreamWrap(out);
-      current->next = 0;
-
-      // check if we are above the default activation level
-      _active = activator<thislevel,alevel>::value;
-
-      // we're not tied to another DebugStream
-      _tied = false;
-
-      // no child streams yet
-      _tied_streams = 0;
-    };
-
-    /*! \brief Create a DebugStream and directly tie to another DebugStream
-
-       The fallback is used if a DebugStream constructed via this method
-       is untie()ed later. Otherwise the stream would be broken afterwards.
-     */
-    DebugStream (DebugStreamState& master,
-                 std::ostream& fallback = std::cerr)
-    {
-      // start a new list of streams
-      current = new StreamWrap(fallback);
-      current->next = 0;
-
-      // check if we are above the default activation level
-      _active = activator<thislevel,alevel>::value;
-      _tied_streams = 0;
-
-      // tie to the provided stream
-      _tied = true;
-      tiedstate = &master;
-      tiedstate->_tied_streams++;
-    };
-
-    /*! \brief Destroy stream.
-
-       if other streams still tie() to this stream an exception will be
-       thrown. Otherwise the child streams would certainly break on the
-       next output
-     */
-    ~DebugStream() {
-      // untie
-      if (_tied)
-        tiedstate->_tied_streams--;
-      else {
-        // check if somebody still ties to us...
-        if (_tied_streams != 0)
-          DUNE_THROW(DebugStreamError,
-                     "There are streams still tied to this stream!");
-      };
-
-      // remove ostream-stack
-      while (current != 0) {
-        StreamWrap *s = current;
-        current = current->next;
-        delete s;
-      };
-    };
-
-    //! \brief Generic types are passed on to current output stream
-    template <class T>
-    DebugStream& operator<<(const T data) {
-      // remove the following code if stream wasn't compiled active
-      if (activator<thislevel, dlevel>::value) {
-        if (! _tied) {
-          if (_active)
-            current->out << data;
-        } else {
-          if (_active && tiedstate->_active)
-            tiedstate->current->out << data;
-        };
-      };
-
-      return *this;
-    }
-
-    /*! \brief explicit specialization so that enums can be printed
-
-       Operators for built-in types follow special
-       rules (§11.2.3) so that enums won't fit into the generic
-       method above. With an existing operator<< for int however
-       the enum will be automatically casted.
-     */
-    DebugStream& operator<<(const int data) {
-      // remove the following code if stream wasn't compiled active
-      if (activator<thislevel, dlevel>::value) {
-        if (! _tied) {
-          if (_active)
-            current->out << data;
-        } else {
-          if (_active && tiedstate->_active)
-            tiedstate->current->out << data;
-        };
-      };
-
-      return *this;
-    }
-
-    //! \brief pass on manipulators to underlying output stream
-    DebugStream& operator<<(std::ostream& (*f)(std::ostream&)) {
-      if (activator<thislevel, dlevel>::value) {
-        if (! _tied) {
-          if (_active)
-            f(current->out);
-        } else {
-          if (_active && tiedstate->_active)
-            f(tiedstate->current->out);
-        };
-      }
-
-      return *this;
-    };
-
-    //! \brief pass on flush to underlying output stream
-    DebugStream& flush() {
-      if (activator<thislevel, dlevel>::value) {
-        if (! _tied) {
-          if (_active)
-            current->out.flush();
-        } else {
-          if (_active && tiedstate->_active)
-            tiedstate->current->out.flush();
-        };
-      }
-
-      return *this;
-    };
-
-    //! \brief set activation flag and store old value
-    void push(bool b) {
-      // are we at all active?
-      if (activator<thislevel,alevel>::value) {
-        _actstack.push(_active);
-        _active = b;
-      } else {
-        // stay off
-        _actstack.push(false);
-      };
-    };
-
-    //! \brief restore previously set activation flag
-    void pop() throw(DebugStreamError) {
-      if (_actstack.empty())
-        DUNE_THROW(DebugStreamError, "No previous activation setting!");
-
-      _active = _actstack.top();
-      _actstack.pop();
-    };
-
-    /*! \brief reports if this stream will produce output
-
-       a DebugStream that is deactivated because of its level will always
-       return false, otherwise the state of the internal activation is
-       returned
-     */
-    bool active() const {
-      return activator<thislevel, dlevel>::value && _active;
-    };
-
-    /*! \brief set output to a different stream.
-
-       Old stream data is stored
-     */
-    void attach(std::ostream& stream) {
-      if (_tied)
-        DUNE_THROW(DebugStreamError, "Cannot attach to a tied stream!");
-
-      StreamWrap* newcurr = new StreamWrap(stream);
-      newcurr->next = current;
-      current = newcurr;
-    };
-
-    //! \brief detach current output stream and restore to previous stream
-    void detach() throw(DebugStreamError) {
-      if (current->next == 0)
-        DUNE_THROW(DebugStreamError, "Cannot detach initial stream!");
-      if (_tied)
-        DUNE_THROW(DebugStreamError, "Cannot detach a tied stream!");
-
-      StreamWrap* old = current;
-      current = current->next;
-      delete old;
-    };
-
-    // \brief Tie a stream to this one.
-    void tie(DebugStreamState& to) throw(DebugStreamError) {
-      if (to._tied)
-        DUNE_THROW(DebugStreamError, "Cannot tie to an already tied stream!");
-      if (_tied)
-        DUNE_THROW(DebugStreamError, "Stream already tied: untie first!");
-
-      _tied = true;
-      tiedstate = &to;
-
-      // tell master class
-      tiedstate->_tied_streams++;
-    };
-
-    //! \brief Untie stream
-    void untie() throw(DebugStreamError) {
-      if(! _tied)
-        DUNE_THROW(DebugStreamError, "Cannot untie, stream is not tied!");
-
-      tiedstate->_tied_streams--;
-      _tied = false;
-      tiedstate = 0;
-    };
-
-  private:
-    //! \brief pointer to data of stream we're tied to
-    DebugStreamState* tiedstate;
-
-    /*! \brief Activation state history.
-
-       store old activation settings so that the outside code doesn't
-       need to remember */
-    std::stack<bool> _actstack;
-  };
-
-  /** /} */
-}
-
-
-#endif
diff --git a/common/deprecated.hh b/common/deprecated.hh
deleted file mode 100644
index d28f9f8e5..000000000
--- a/common/deprecated.hh
+++ /dev/null
@@ -1,10 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_DEPRECATED_HH
-#define DUNE_DEPRECATED_HH
-
-#ifndef DUNE_DEPRECATED
-#define DUNE_DEPRECATED
-#endif
-
-#endif
diff --git a/common/enumset.hh b/common/enumset.hh
deleted file mode 100644
index b09d4fdf7..000000000
--- a/common/enumset.hh
+++ /dev/null
@@ -1,148 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_ENUMSET_HH
-#define DUNE_ENUMSET_HH
-
-#include <iostream>
-
-namespace Dune
-{
-  /**
-   * @file
-   * @brief Classes for building sets out of enumeration values.
-   * @author Markus Blatt
-   */
-  /** @addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * @brief An empty set.
-   */
-  template<typename TA>
-  class EmptySet
-  {
-  public:
-    /**
-     * @brief The POD type the set holds.
-     */
-    typedef TA Type;
-    /**
-     * @brief Always returns false.
-     */
-    static bool contains(const Type& attribute);
-  };
-
-  /**
-   * @brief A set consisting only of one item.
-   */
-  template<typename TA, int item>
-  class EnumItem
-  {
-  public:
-    /**
-     * @brief The type the set holds.
-     */
-    typedef TA Type;
-
-    /**
-     * @brief Tests whether an item is in the set.
-     * @return True if item==Type.
-     */
-    static bool contains(const Type& attribute);
-  };
-
-  /**
-   * @brief A set representing a range including the borders.
-   */
-  template<typename T,int from, int end>
-  class EnumRange //: public PODSet<EnumRange<T,from,end>,T>
-  {
-  public:
-    /**
-     * @brief The type the set holds.
-     */
-    typedef T Type;
-    static bool contains(const T& item);
-  };
-
-  /**
-   * @brief The negation of a set.
-   * An item is contained in the set if and only if it is not
-   * contained in the negated set.
-   */
-  template<typename S>
-  class NegateSet
-  {
-  public:
-    typedef typename S::Type Type;
-
-    static bool contains(const Type& item)
-    {
-      return !S::contains(item);
-    }
-  };
-
-  /**
-   * @brief A set combining two other sets.
-   */
-  template<class TI1, class TI2, typename TA=typename TI1::Type>
-  class Combine
-  {
-  public:
-    static bool contains(const TA& item);
-  };
-
-  template<typename TA>
-  inline bool EmptySet<TA>::contains(const TA& attribute)
-  {
-    return false;
-  }
-
-  template<typename TA,int i>
-  inline bool EnumItem<TA,i>::contains(const TA& item)
-  {
-    return item==i;
-  }
-
-  template<typename TA,int i>
-  inline std::ostream& operator<<(std::ostream& os, const EnumItem<TA,i>&)
-  {
-    return os<<i;
-  }
-
-  template<typename TA, int from, int to>
-  inline bool EnumRange<TA,from,to>::contains(const TA& item)
-  {
-    return from<=item && item<=to;
-  }
-
-  template<typename TA, int from, int to>
-  inline std::ostream& operator<<(std::ostream& os, const EnumRange<TA,from,to>&)
-  {
-    return os<<"["<<from<<" - "<<to<<"]";
-  }
-
-  template<class TI1, class TI2, typename TA>
-  inline bool Combine<TI1,TI2,TA>::contains(const TA& item)
-  {
-    return TI1::contains(item) ||
-           TI2::contains(item);
-  }
-
-  template<class TI1, class TI2>
-  inline Combine<TI1,TI2,typename TI1::Type> combine(const TI1& set1, const TI2& set2)
-  {
-    return Combine<TI1,TI2,typename TI1::Type>();
-  }
-
-  template<class TI1, class TI2, class T>
-  inline std::ostream& operator<<(std::ostream& os, const Combine<TI1,TI2,T>&)
-  {
-    return os << TI1()<<" "<<TI2();
-  }
-  /** @} */
-}
-
-#endif
diff --git a/common/exceptions.hh b/common/exceptions.hh
deleted file mode 100644
index a75f3dcc3..000000000
--- a/common/exceptions.hh
+++ /dev/null
@@ -1,206 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_EXCEPTIONS_HH
-#define DUNE_EXCEPTIONS_HH
-
-#include <string>
-#include <sstream>
-
-namespace Dune {
-
-
-  /*! \defgroup Exceptions Exception handling
-     \ingroup Common
-
-     The Dune-exceptions are designed to allow a simple derivation of subclasses
-     and to accept a text written in the '<<' syntax.
-
-     Example of usage:
-
-     \code
-     #include <dune/common/exceptions.hh>
-
-     ...
-
-     class FileNotFoundError : public Dune::IOError {};
-
-     ...
-
-     void fileopen (std::string name) {
-     std::ifstream file;
-
-     file.open(name.c_str());
-
-     if (file == 0)
-      DUNE_THROW(FileNotFoundError, "File " << name << " not found!");
-
-     ...
-
-     file.close();
-     }
-
-     ...
-
-     int main () {
-     try {
-      ...
-     } catch (Dune::IOError &e) {
-      std::cerr << "I/O error: " << e << std::endl;
-      return 1;
-     } catch (Dune::Exception &e) {
-      std::cerr << "Generic Dune error: " << e << std::endl;
-      return 2;
-     }
-     }
-     \endcode
-
-     See exceptions.hh for detailed info
-
-   */
-
-  /*! \file
-     \brief A few common exception classes
-
-     This file defines a common framework for generating exception
-     subclasses and to throw them in a simple manner
-
-   */
-
-
-  /*! \brief Base class for Dune-Exceptions
-
-     all Dune exceptions are derived from this class via trivial subclassing:
-
-     \code
-     class MyException : public Dune::Exception {};
-     \endcode
-
-     You should not \c throw a Dune::Exception directly but use the macro
-     DUNE_THROW() instead which fills the message-buffer of the exception
-     in a standard way and features a way to pass the result in the
-     operator<<-style
-
-     \see DUNE_THROW, IOError, MathError
-
-   */
-  class Exception {
-  public:
-    void message(const std::string &message); //!< store string in internal message buffer
-    const std::string& what() const;        //!< output internal message buffer
-  private:
-    std::string _message;
-  };
-
-  inline void Exception::message(const std::string &message)
-  {
-    _message = message;
-  }
-
-  inline const std::string& Exception::what() const
-  {
-    return _message;
-  }
-
-  inline std::ostream& operator<<(std::ostream &stream, const Exception &e)
-  {
-    return stream << e.what();
-  }
-
-  // the "format" the exception-type gets printed.  __FILE__ and
-  // __LINE__ are standard C-defines, the GNU cpp-infofile claims that
-  // C99 defines __func__ as well. __FUNCTION__ is a GNU-extension
-#ifdef DUNE_DEVEL_MODE
-# define THROWSPEC(E) # E << " [" << __func__ << ":" << __FILE__ << ":" << __LINE__ << "]: "
-#else
-# define THROWSPEC(E) # E << ": "
-#endif
-
-  /*! Macro to throw an exception
-
-     \param E exception class derived from Dune::Exception
-     \param m reason for this exception in ostream-notation
-
-     Example:
-
-     \code
-     if (filehandle == 0)
-      DUNE_THROW(FileError, "Could not open " << filename << " for reading!")
-     \endcode
-
-     DUNE_THROW automatically adds information about the exception thrown
-     to the text. If DUNE_DEVEL_MODE is defined more detail about the
-     function where the exception happened is included. This mode can be
-     activated via the \c --enable-dunedevel switch of \c ./configure
-   */
-  // this is the magic: use the usual do { ... } while (0) trick, create
-  // the full message via a string stream and throw the created object
-#define DUNE_THROW(E, m) do { E th__ex; std::ostringstream th__out; \
-                              th__out << THROWSPEC(E) << m; th__ex.message(th__out.str()); throw th__ex; \
-} while (0)
-
-  /*! \brief Default exception class for I/O errors
-
-     This is a superclass for any errors dealing with file/socket I/O problems
-     like
-
-     - file not found
-     - could not write file
-     - could not connect to remote socket
-   */
-  class IOError : public Exception {};
-
-  /*! \brief Default exception class for mathematical errors
-
-     This is the superclass for all errors which are caused by
-     mathematical problems like
-
-     - matrix not invertible
-     - not convergent
-   */
-  class MathError : public Exception {};
-
-  /*! \brief Default exception class for range errors
-
-     This is the superclass for all errors which are caused because
-     the user tries to access data that was not allocated before.
-     These can be problems like
-
-     - accessing array entries behind the last entry
-     - adding the fourth non zero entry in a sparse matrix
-       with only three non zero entries per row
-
-   */
-  class RangeError : public Exception {};
-
-  /*! \brief Default exception for dummy implementations
-
-     This exception can be used for functions/methods
-
-     - that have to be implemented but should never be called
-     - that are missing
-   */
-  class NotImplemented : public Exception {};
-
-  /*! \brief Default exception class for OS errors
-
-     This class is thrown when a system-call is used and returns an
-     error.
-
-   */
-  class SystemError : public Exception {};
-
-  /*! \brief Default exception if memory allocation fails
-
-   */
-  class OutOfMemoryError : public SystemError {};
-
-  /*! \brief Default exception if a function was called while
-   * the object is not in a valid state for that function.
-   */
-  class InvalidStateException : public Exception {};
-
-} // end namespace
-
-#endif
diff --git a/common/exprtmpl.cc b/common/exprtmpl.cc
deleted file mode 100644
index 86bdcfdc7..000000000
--- a/common/exprtmpl.cc
+++ /dev/null
@@ -1,6 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include "exprtmpl.hh"
-
-/** This is only needed for debugging and will be removed in the future */
-Indent INDENT;
diff --git a/common/exprtmpl.hh b/common/exprtmpl.hh
deleted file mode 100644
index 79acef0c1..000000000
--- a/common/exprtmpl.hh
+++ /dev/null
@@ -1,1111 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#if ! defined DUNE_EXPRTMPL_HH && DUNE_EXPRESSIONTEMPLATES
-#define DUNE_EXPRTMPL_HH
-
-/*
-   This file is part of DUNE, a Distributed and Unified Numerics Environment
-   It is distributed under the terms of the GNU Lesser General Public License version 2.1
-   See COPYING at the top of the source tree for the full licence.
- */
-
-/*! @file
-
-   @brief This file provides expression templates for the
-         «Dense Matrix and Vector Template Library» and for the
-         «Iterative Solvers Template Library».
-   @verbatim
-   $Id$
-   @endverbatim
- */
-
-#include <iostream>
-#include <iomanip>
-#include <cstdlib>
-#include <cmath>
-#include <complex>
-#include "iteratorfacades.hh"
-#include "static_assert.hh"
-#include "stdstreams.hh"
-
-struct Indent
-{
-  int i;
-  Indent() {
-    i = 0;
-  }
-  void operator ++ ()
-  {
-#ifdef DUNE_VVERBOSE
-    i += 3;
-#endif
-  };
-  void operator -- ()
-  {
-#ifdef DUNE_VVERBOSE
-    i -= 3;
-#endif
-  };
-};
-
-extern Indent INDENT;
-
-inline std::ostream & operator << (std::ostream & s, const Indent & i)
-{
-#ifdef DUNE_VVERBOSE
-  for (int n = 0; n < i.i; n++) s << " ";
-#endif
-  return s;
-}
-
-namespace Dune {
-
-  template<class V> class FlatIterator;
-  template<class K, int N> class FieldVector;
-  template<class K, int N, int M> class FieldMatrix;
-#warning this header should not know about BCRSMatrix and BlockVector
-  class ISTLAllocator;
-  template<class B, class A=ISTLAllocator> class BCRSMatrix;
-  template<class B, class A=ISTLAllocator> class BlockVector;
-
-  /**
-     Type Traits for field_type and block_type
-   */
-  template<class T>
-  struct BlockType
-  {};
-  template<class T>
-  struct FieldType
-  {};
-  // FieldType specializations for basic data types
-  template<>
-  struct FieldType<double>
-  {
-    typedef double type;
-  };
-  template<>
-  struct FieldType<float>
-  {
-    typedef float type;
-  };
-  template<>
-  struct FieldType<int>
-  {
-    typedef int type;
-  };
-  // FieldType specialization for FieldVector
-  template <class K, int N>
-  struct FieldType< FieldVector<K,N> >
-  {
-    typedef K type;
-  };
-  // BlockType specialization for FieldVector
-  template <class K, int N>
-  struct BlockType< FieldVector<K,N> >
-  {
-    typedef K type;
-  };
-  // FieldType specialization for const T
-  template<class T>
-  struct FieldType<const T>
-  {
-    typedef const typename FieldType<T>::type type;
-  };
-  // BlockType specialization for const T
-  template<class T>
-  struct BlockType<const T>
-  {
-    typedef const typename BlockType<T>::type type;
-  };
-
-  namespace ExprTmpl {
-
-    /* Important Classes */
-    template <class V> class ConstRef;
-    template <class Ex> class Expression;
-    template <class A, class B, template<class> class Op> class ExBinOp;
-    template <class I> class Vector;
-    template <class I> class Matrix;
-
-    /**
-       Type Trait for nested Expression
-     */
-    template<class T>
-    struct BlockExpression
-    {};
-    /**
-       Type Trait for Implementation of an Expression
-     */
-    template<class T>
-    struct ExpressionImp
-    {};
-
-    template <class V>
-    struct ExpressionImp< ExprTmpl::ConstRef<V> >
-    {
-      typedef ExprTmpl::ConstRef<V> type;
-    };
-
-    // TypeTraits
-    template <>
-    struct ExpressionImp<double>
-    {
-      typedef double type;
-    };
-    template <>
-    struct ExpressionImp<float>
-    {
-      typedef float type;
-    };
-    template <>
-    struct ExpressionImp<int>
-    {
-      typedef int type;
-    };
-    template <class Ex>
-    struct ExpressionImp< Expression<Ex> >
-    {
-      typedef Ex type;
-    };
-
-    /** Identify End of Expression Recursion */
-    template <class V>
-    struct isEndOfExpressionRecusion
-    {
-      enum { value=false };
-    };
-
-    template <>
-    struct isEndOfExpressionRecusion<double>
-    {
-      enum { value=true };
-    };
-
-    template <class K>
-    struct isEndOfExpressionRecusion< FieldVector<K,1> >
-    {
-      enum { value=true };
-    };
-
-    template <class K>
-    struct isEndOfExpressionRecusion< std::complex<K> >
-    {
-      enum { value=true };
-    };
-
-    template <>
-    struct isEndOfExpressionRecusion<int>
-    {
-      enum { value=true };
-    };
-
-    template <>
-    struct isEndOfExpressionRecusion<float>
-    {
-      enum { value=true };
-    };
-
-    /** Nested Expression in a ConstRef<V> */
-    template <class V>
-    struct BlockExpression< ConstRef<V> >
-    {
-      typedef ExprTmpl::Expression<
-          ExprTmpl::ConstRef<typename BlockType<V>::type> > type;
-    };
-
-    /** No nested Expression in ConstRef<FieldVector> */
-    template<class K, int N>
-    struct BlockExpression< ConstRef< FieldVector<K,N> > >
-    {
-      typedef K type;
-    };
-
-    /**
-       Wrapper for an expression template
-     */
-    template <class Ex>
-    class Expression
-    {
-    public:
-      Expression(const Ex & x) : ex(x) {}
-      typedef typename FieldType<Ex>::type field_type;
-      typedef typename BlockExpression<Ex>::type BlockExpr;
-      BlockExpr operator[] ( int i ) const {
-        return ex[i];
-      }
-      size_t N() const { return ex.N(); }
-      double one_norm() const { return eval_one_norm(*this); }
-      double one_norm_real() const { return eval_one_norm_real(*this); }
-      double two_norm() const { return sqrt(eval_two_norm2(*this)); }
-      double two_norm2() const { return eval_two_norm2(*this); }
-      double infinity_norm() const { return eval_infinity_norm(*this); }
-      double infinity_norm_real() const { return eval_infinity_norm_real(*this); }
-    private:
-      Ex ex;
-    };
-
-    /**
-       Vector Base Class for Expression Templates
-     */
-    template <class I>
-    class Vector {
-    public:
-      explicit Vector() {}
-      typedef typename BlockType<I>::type block_type;
-      typedef typename FieldType<I>::type field_type;
-      //! dimension of the vector space
-      size_t N() const {
-        return asImp().N();
-      }
-      double one_norm() const { return eval_one_norm(*this); }
-      double one_norm_real() const { return eval_one_norm_real(*this); }
-      double two_norm() const { return sqrt(eval_two_norm2(*this)); }
-      double two_norm2() const { return eval_two_norm2(*this); }
-      double infinity_norm() const { return eval_infinity_norm(*this); }
-      double infinity_norm_real() const { return eval_infinity_norm_real(*this); }
-      block_type & operator[] (int i) {
-        return asImp()[i];
-      }
-      const block_type & operator[] (int i) const {
-        return asImp()[i];
-      }
-      //! begin for FlatIterator
-      FlatIterator<I> fbegin() { return FlatIterator<I>(asImp().begin()); }
-      //! end for FlatIterator
-      FlatIterator<I> fend() { return FlatIterator<I>(asImp().end()); }
-      //! begin for ConstFlatIterator
-      FlatIterator<const I> fbegin() const {
-        return FlatIterator<const I>(asImp().begin());
-      }
-      //! end for ConstFlatIterator
-      FlatIterator<const I> fend() const {
-        return FlatIterator<const I>(asImp().end());
-      }
-      //! assign Vector from Expression
-      template <class E> I& assignFrom(Expression<E>& x) {
-#warning should there be a resize?
-#ifdef DUNE_ISTL_WITH_CHECKING
-        assert(N() == x.N());
-#endif
-#ifdef DUNE_VVERBOSE
-        Dune::dvverb << INDENT << "Assign Vector from Expression\n";
-#endif
-        ++INDENT;
-        for (int i=0; i<N(); ++i) { asImp()[i] = x[i]; }
-        --INDENT;
-        return asImp();
-      }
-      //! assign Vector from Vector
-      template <class V> I& assignFrom(const Vector<V>& v) {
-#ifdef DUNE_ISTL_WITH_CHECKING
-        assert(N() == v.N());
-#endif
-#ifdef DUNE_VVERBOSE
-        Dune::dvverb << INDENT << "Assign Vector from Vector\n";
-#endif
-        ++INDENT;
-        for (int i=0; i<N(); ++i) { asImp()[i] = v[i]; }
-        --INDENT;
-        return asImp();
-      }
-      /*
-         I& assignFrom(const Vector<block_type> & x) {
-         #ifdef DUNE_VVERBOSE
-         Dune::dvverb << INDENT << "Assign Vector block_type\n";
-         #endif
-         ++INDENT;
-         for (int i=0; i < asImp().N(); i++) asImp()[i] = x;
-         --INDENT;
-         return asImp();
-         }
-       */
-      I& assignFrom(field_type x) {
-#ifdef DUNE_VVERBOSE
-        Dune::dvverb << INDENT << "Assign Vector from field_type\n";
-#endif
-        ++INDENT;
-        for (size_t i=0; i<N(); ++i) { asImp()[i] = x; }
-        --INDENT;
-        return asImp();
-      }
-      template <class E> Vector<I>& operator+=(const Expression<E>& x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] += x[i];
-        return asImp();
-      }
-      template <class V> Vector<I>& operator+=(const Vector<V>& x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] += x[i];
-        return asImp();
-      }
-      template <class E> Vector<I>& operator-=(const Expression<E>& x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] -= x[i];
-        return asImp();
-      }
-      template <class V> Vector<I>& operator-=(const Vector<V>& x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] -= x[i];
-        return asImp();
-      }
-      Vector<I>& operator+=(field_type x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] += x;
-        return asImp();
-      }
-      Vector<I>& operator-=(field_type x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] -= x;
-        return asImp();
-      }
-      Vector<I>& operator*=(field_type x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] *= x;
-        return asImp();
-      }
-      Vector<I>& operator/=(field_type x) {
-        for (size_t i=0; i < asImp().N(); i++) asImp()[i] /= x;
-        return asImp();
-      }
-    private:
-      I & asImp() { return static_cast<I&>(*this); }
-      const I & asImp() const { return static_cast<const I&>(*this); }
-    };
-
-    template <class V>
-    class ConstRef
-    {
-    public:
-      typedef typename FieldType<V>::type field_type;
-      typedef typename BlockType<V>::type block_type;
-      typedef typename BlockExpression< ConstRef<V> >::type BlockExpr;
-      typedef typename ExpressionImp<BlockExpr>::type BlockExprImp;
-      ConstRef (const Vector<V> & _v) : v(_v) {}
-      BlockExpr operator[] (int i) const {
-#ifdef DUNE_VVERBOSE
-        Dune::dvverb << INDENT << "ConstRef->dereference " << v[i] << std::endl;
-#endif
-        return BlockExprImp(v[i]);
-      }
-      size_t N() const { return v.N(); };
-      double one_norm() const { return eval_one_norm(*this); }
-      double one_norm_real() const { return eval_one_norm_real(*this); }
-      double two_norm() const { return sqrt(eval_two_norm2(*this)); }
-      double two_norm2() const { return eval_two_norm2(*this); }
-      double infinity_norm() const { return eval_infinity_norm(*this); }
-      double infinity_norm_real() const { return eval_infinity_norm_real(*this); }
-    private:
-      const Vector<V> & v;
-    };
-
-  } // namespace ExprTmpl
-
-  template <class A>
-  struct FieldType< ExprTmpl::Expression<A> >
-  {
-    typedef typename FieldType<A>::type type;
-  };
-
-  template <class V>
-  struct FieldType< ExprTmpl::ConstRef<V> >
-  {
-    typedef typename FieldType<V>::type type;
-  };
-
-  template <class I>
-  struct FieldType< ExprTmpl::Vector<I> >
-  {
-    typedef typename FieldType<I>::type type;
-  };
-
-  // ----
-  template <class A>
-  struct BlockType< ExprTmpl::Expression<A> >
-  {
-    typedef typename BlockType<A>::type type;
-  };
-
-  template <class V>
-  struct BlockType< ExprTmpl::ConstRef<V> >
-  {
-    typedef typename BlockType<V>::type type;
-  };
-
-  template <class I>
-  struct BlockType< ExprTmpl::Vector<I> >
-  {
-    typedef typename BlockType<I>::type type;
-  };
-
-  /**
-     Type Traits for row_type of Matrix
-   */
-  template<class M>
-  struct RowType
-  {
-    typedef typename M::row_type type;
-  };
-  template<class K, int N, int M>
-  struct RowType< FieldMatrix<K,N,M> >
-  {
-    typedef FieldVector<K,M> type;
-  };
-  template <class I>
-  struct RowType< ExprTmpl::Matrix<I> >
-  {
-    typedef typename RowType<I>::type type;
-  };
-  // RowType specialization for const T
-  template<class T>
-  struct RowType<const T>
-  {
-    typedef const typename RowType<T>::type type;
-  };
-
-  // Matrix-Vector Multiplication
-  namespace ExprTmpl {
-
-    /**
-       Matrix Base Class for Expression Templates
-     */
-    template <class I>
-    class Matrix {
-    public:
-      explicit Matrix() {}
-      typedef typename RowType<I>::type row_type;
-      typedef typename FieldType<I>::type field_type;
-      //! dimension of the vector space
-      size_t N() const {
-        return asImp().N();
-      }
-      int M() const {
-        return asImp().M();
-      }
-      row_type & operator[] (int i) {
-        return asImp()[i];
-      }
-      const row_type & operator[] (int i) const {
-        return asImp()[i];
-      }
-    private:
-      I & asImp() { return static_cast<I&>(*this); }
-      const I & asImp() const { return static_cast<const I&>(*this); }
-    };
-
-    // Trait Structs to extract infos needed for Matrix-Vector Multiplication
-    template<class M>
-    struct NestedDepth
-    {
-      enum { value = NestedDepth<typename BlockType<M>::type>::value + 1 };
-    };
-
-    template<class K, int N, int M>
-    struct NestedDepth< FieldMatrix<K,N,M> >
-    {
-      enum { value = 1 };
-    };
-
-    template<class Me, class M>
-    struct MyDepth
-    {
-      enum { value = MyDepth<Me,typename BlockType<M>::type>::value+1 };
-    };
-
-    template<class Me>
-    struct MyDepth<Me,Me>
-    {
-      enum { value = 0 };
-    };
-
-    template<class B, int i>
-    struct BlockTypeN
-    {
-      typedef typename BlockTypeN<typename BlockType<B>::type, i-1>::type type;
-    };
-
-    template<class B>
-    struct BlockTypeN<B,0>
-    {
-      typedef B type;
-    };
-
-    template<class B>
-    struct BlockTypeN<B,-1>
-    {
-      typedef B type;
-    };
-
-    //! Type Traits for Vector::Iterator vs (const Vector)::ConstIterator
-    template<class T>
-    struct ColIteratorType
-    {
-      typedef typename T::ColIterator type;
-    };
-
-    template<class T>
-    struct ColIteratorType<const T>
-    {
-      typedef typename T::ConstColIterator type;
-    };
-
-    //! Iterator class for flat sequential access to a nested Matrix Row
-    template<class A>
-    class FlatColIterator :
-      public ForwardIteratorFacade<FlatColIterator<A>,
-          typename FieldType<A>::type,
-          typename FieldType<A>::type&,
-          int>
-    {
-    public:
-      typedef typename ColIteratorType<A>::type ColBlockIterator;
-      typedef std::ptrdiff_t DifferenceType;
-      //    typedef typename BlockIterator::DifferenceType DifferenceType;
-      typedef typename BlockType<A>::type block_type;
-      typedef typename FieldType<A>::type field_type;
-      typedef FlatColIterator<block_type> SubBlockIterator;
-      FlatColIterator(const ColBlockIterator & i, const int* _M) :
-        M(_M), it(i),
-        bit((*i)[(*M)].begin(), M+1),
-        bend((*i)[(*M)].end(), M+1) {};
-      void increment ()
-      {
-        ++bit;
-        if (bit == bend)
-        {
-          ++it;
-          bit = (*it)[(*M)].begin();
-          bend = (*it)[(*M)].end();
-        }
-      }
-      bool equals (const FlatColIterator & fit) const
-      {
-        return fit.it == it && fit.bit == bit;
-      }
-      const field_type& dereference() const
-      {
-        return *bit;
-      }
-      template<class V>
-      const field_type& vectorentry(const Dune::ExprTmpl::Vector<V> & v) const
-      {
-        return bit.vectorentry(v[it.index()]);
-      }
-      //! return index
-      DifferenceType index () const
-      {
-        return bit.index();
-      }
-      FlatColIterator operator = (const ColBlockIterator & _i)
-      {
-        it = _i;
-        bit = (*it)[(*M)].begin();
-        bend = (*it)[(*M)].end();
-        return *this;
-      }
-    private:
-      const int* M;
-      ColBlockIterator it;
-      SubBlockIterator bit;
-      SubBlockIterator bend;
-    };
-
-    template<class K, int N, int M>
-    class FlatColIterator<FieldMatrix<K,N,M> > :
-      public ForwardIteratorFacade<
-          FlatColIterator< FieldMatrix<K,N,M> >, K, K&, int>
-    {
-    public:
-      typedef
-      typename ColIteratorType< FieldMatrix<K,N,M> >::type ColBlockIterator;
-      typedef std::ptrdiff_t DifferenceType;
-      typedef K field_type;
-      FlatColIterator(const ColBlockIterator & i, const int*) :
-        it(i) {};
-      void increment ()
-      {
-        ++it;
-      }
-      bool equals (const FlatColIterator & fit) const
-      {
-        return fit.it == it;
-      }
-      field_type& dereference() const
-      {
-        return *it;
-      }
-      const field_type& vectorentry(const FieldVector<K,M> & v) const
-      {
-        return v[it.index()];
-      }
-      //! return index
-      DifferenceType index () const
-      {
-        return it.index();
-      }
-      FlatColIterator operator = (const ColBlockIterator & _i)
-      {
-        it = _i;
-        return *this;
-      }
-    private:
-      ColBlockIterator it;
-    };
-
-    template<class K, int N, int M>
-    class FlatColIterator<const FieldMatrix<K,N,M> > :
-      public ForwardIteratorFacade<
-          FlatColIterator< const FieldMatrix<K,N,M> >, const K, const K&, int>
-    {
-    public:
-      typedef
-      typename ColIteratorType< const FieldMatrix<K,N,M> >::type ColBlockIterator;
-      typedef std::ptrdiff_t DifferenceType;
-      typedef const K field_type;
-      FlatColIterator(const ColBlockIterator & i, const int*) :
-        it(i) {};
-      void increment ()
-      {
-        ++it;
-      }
-      bool equals (const FlatColIterator & fit) const
-      {
-        return fit.it == it;
-      }
-      field_type& dereference() const
-      {
-        return *it;
-      }
-      const field_type& vectorentry(const FieldVector<K,M> & v) const
-      {
-        return v[it.index()];
-      }
-      //! return index
-      DifferenceType index () const
-      {
-        return it.index();
-      }
-      FlatColIterator operator = (const ColBlockIterator & _i)
-      {
-        it = _i;
-        return *this;
-      }
-    private:
-      ColBlockIterator it;
-    };
-
-    /**
-       B: BlockMatrix type -> indicated the current level.
-       M: ,,global'' Matrix type
-       V: ,,global'' Vector type
-     */
-    template <class B, class Mat, class Vec>
-    class MatrixMulVector
-    {
-    public:
-      typedef typename
-      BlockTypeN<MatrixMulVector<Mat,Mat,Vec>, MyDepth<B,Mat>::value-1>::type
-      ParentBlockType;
-      typedef
-      MatrixMulVector<typename BlockType<B>::type,Mat,Vec> SubMatrixMulVector;
-      typedef typename
-      Dune::ExprTmpl::BlockExpression< MatrixMulVector<B,Mat,Vec> >::type
-      BlockExpr;
-      typedef
-      typename BlockType<Mat>::type::ColIterator SubColIterator;
-      typedef typename Dune::FieldType<Vec>::type field_type;
-      /* constructor */
-      MatrixMulVector(const Mat & _A, const Vec & _v, int* _M,
-                      const ParentBlockType & _parent) :
-        parent(_parent), M(_M), A(_A), v(_v) {};
-      BlockExpr operator[] (int i) const {
-        M[MyDepth<B,Mat>::value] = i;
-        return SubMatrixMulVector(A,v,M,*this);
-      }
-      size_t N() const { return -1; }; //r.begin()->N(); }
-      const ParentBlockType & parent;
-    private:
-      mutable int* M;
-      const Mat & A;
-      const Vec & v;
-    };
-
-    template <class Mat, class Vec>
-    class MatrixMulVector<Mat,Mat,Vec>
-    {
-    public:
-      typedef
-      MatrixMulVector<typename BlockType<Mat>::type,Mat,Vec> SubMatrixMulVector;
-      typedef
-      typename BlockType<Mat>::type::ColIterator SubColIterator;
-      typedef typename
-      Dune::ExprTmpl::BlockExpression< MatrixMulVector<Mat,Mat,Vec> >::type
-      BlockExpr;
-      typedef typename Dune::FieldType<Vec>::type field_type;
-      /* constructor */
-      MatrixMulVector(const Mat & _A, const Vec & _v, int* _M) :
-        M(_M), A(_A), v(_v) {};
-      BlockExpr operator[] (int i) const {
-        M[0] = i;
-        return SubMatrixMulVector(A,v,M,*this);
-      }
-      size_t N() const { return -1; }; // { parent.begin().N(); }
-    private:
-      mutable int* M;
-      const Mat & A;
-      const Vec & v;
-    };
-
-    template <class K, int iN, int iM, class Mat, class Vec>
-    class MatrixMulVector< FieldMatrix<K,iN,iM>, Mat, Vec >
-    {
-    public:
-      typedef typename
-      BlockTypeN<MatrixMulVector<Mat,Mat,Vec>,
-          MyDepth<FieldMatrix<K,iN,iM>,Mat>::value-1>::type
-      ParentBlockType;
-      /* constructor */
-      MatrixMulVector(const Mat & _A, const Vec & _v, int* _M,
-                      const ParentBlockType & _parent) :
-        parent(_parent), M(_M), A(_A), v(_v ) {};
-      K operator[] (int i) const {
-        K x=0;
-        M[MyDepth<FieldMatrix<K,iN,iM>,Mat>::value] = i;
-
-        FlatColIterator<const Mat> j(A[*M].begin(),M+1);
-        FlatColIterator<const Mat> endj(A[*M].end(),M+1);
-        for (; j!=endj; ++j)
-        {
-          x   += (*j) * j.vectorentry(v);
-        }
-        return x;
-      }
-      size_t N() const { return iN; };
-      const ParentBlockType & parent;
-    private:
-      mutable int* M;
-      const Mat & A;
-      const Vec & v;
-    };
-
-    template <class K, int iN, int iM>
-    class MatrixMulVector< FieldMatrix<K,iN,iM>, FieldMatrix<K,iN,iM>,
-        FieldVector<K,iM> >
-    {
-    public:
-      typedef FieldMatrix<K,iN,iM> Mat;
-      typedef FieldVector<K,iM> Vec;
-      MatrixMulVector(const Mat & _A, const Vec & _v) :
-        A(_A), v(_v ){};
-      K operator[] (int i) const {
-        K x=0;
-        typename Mat::ColIterator j = A[i].begin();
-        typename Mat::ColIterator endj = A[i].end();
-        for (; j!=endj; ++j)
-        {
-          x   += (*j) * j.vectorentry(v);
-        }
-        return x;
-      }
-      size_t N() const { return iN; };
-    private:
-      const Mat & A;
-      const Vec & v;
-    };
-
-    template <class M, class A, class B>
-    struct BlockExpression< MatrixMulVector< M, A, B > >
-    {
-      typedef Expression< MatrixMulVector<typename BlockType<M>::type,A,B> > type;
-    };
-
-    template <class K, int N, int M, class A, class B>
-    struct BlockExpression< MatrixMulVector< FieldMatrix<K,N,M>, A, B > >
-    {
-      typedef K type;
-    };
-
-    template<class K, int N, int M>
-    ExprTmpl::Expression<
-        MatrixMulVector<FieldMatrix<K,N,M>, FieldMatrix<K,N,M>, FieldVector<K,M> > >
-    operator * ( const FieldMatrix<K,N,M> & A, const FieldVector<K,M> & v )
-    {
-      return
-        ExprTmpl::Expression<
-          MatrixMulVector<FieldMatrix<K,N,M>, FieldMatrix<K,N,M>, FieldVector<K,M> > >
-        (
-          MatrixMulVector<FieldMatrix<K,N,M>, FieldMatrix<K,N,M>, FieldVector<K,M> >
-            (A, v)
-        );
-    }
-
-    // template<class BM, class BV>
-    // ExprTmpl::Expression<
-    //   MatrixMulVector<BCRSMatrix<BM>, BCRSMatrix<BM>, BlockVector<BV> > >
-    // operator * ( const BCRSMatrix<BM> & A, const BlockVector<BV> & v )
-    // {
-    //   static int indizes[20];
-    //   return
-    //     Expression<
-    //       MatrixMulVector<BCRSMatrix<BM>, BCRSMatrix<BM>, BlockVector<BV> > >
-    //     (
-    //       MatrixMulVector<BCRSMatrix<BM>, BCRSMatrix<BM>, BlockVector<BV> >(A, v, indizes)
-    //       );
-    // }
-
-    template<class M, class V>
-    ExprTmpl::Expression<
-        MatrixMulVector<Matrix<M>, Matrix<M>, Vector<V> > >
-    operator * ( const Matrix<M> & A, const Vector<V> & v )
-    {
-      static int indizes[20];
-      return
-        Expression<
-          MatrixMulVector<Matrix<M>, Matrix<M>, Vector<V> > >
-        (
-          MatrixMulVector<Matrix<M>, Matrix<M>, Vector<V> >(A, v, indizes)
-        );
-    }
-
-    template<class I>
-    struct ColIteratorType< Matrix<I> >
-    {
-      typedef typename I::ColIterator type;
-    };
-    template<class I>
-    struct ColIteratorType< const Matrix<I> >
-    {
-      typedef typename I::ConstColIterator type;
-    };
-
-  } // namespace ExprTmpl
-
-  template <class B, class A, class V>
-  struct FieldType< ExprTmpl::MatrixMulVector<B,A,V> >
-  {
-    typedef typename FieldType<V>::type type;
-  };
-  template <class I>
-  struct BlockType< ExprTmpl::Matrix<I> >
-  {
-    typedef typename BlockType<I>::type type;
-  };
-  template <class I>
-  struct FieldType< ExprTmpl::Matrix<I> >
-  {
-    typedef typename FieldType<I>::type type;
-  };
-
-  // OPERATORS
-
-  /* Scalar-Expression Operator */
-#define OP *
-#define ExpressionOpScalar ExpressionMulScalar
-#define ScalarOpExpression ScalarMulExpression
-#include "exprtmpl/scalar.inc"
-
-#define OP /
-#define ExpressionOpScalar ExpressionDivScalar
-#include "exprtmpl/scalar.inc"
-
-#define OP +
-#define ExpressionOpScalar ExpressionAddScalar
-#define ScalarOpExpression ScalarAdExpression
-#include "exprtmpl/scalar.inc"
-
-#define OP -
-#define ExpressionOpScalar ExpressionMinScalar
-#define ScalarOpExpression ScalarMinExpression
-#include "exprtmpl/scalar.inc"
-
-  /* Expression-Expression Operator */
-#define OP +
-#define ExpressionOpExpression ExpressionAddExpression
-#include "exprtmpl/exprexpr.inc"
-
-#define OP -
-#define ExpressionOpExpression ExpressionMinExpression
-#include "exprtmpl/exprexpr.inc"
-
-  /* one norm (sum over absolute values of entries) */
-
-#define NORM eval_one_norm
-#define NORM_CODE \
-  { \
-    typename FieldType<A>::type val=0; \
-    Dune::dvverb << INDENT << "Infinity Norm of Expression\n"; \
-    ++INDENT; \
-    for (size_t i=0; i<a.N(); ++i) { val += eval_one_norm(a[i]); } \
-    --INDENT; \
-    return val; \
-  }
-#define VAL_CODE { return std::abs(a); }
-#include "exprtmpl/norm.inc"
-
-  template<class K>
-  inline K eval_one_norm (const std::complex<K>& c)
-  {
-    sqrt(c.real()*c.real() + c.imag()*c.imag());
-  }
-
-  template <class A>
-  typename FieldType<A>::type
-  one_norm (const A & a)
-  {
-    return eval_one_norm(a);
-  }
-
-  /* simplified one norm (uses Manhattan norm for complex values) */
-
-#define NORM eval_one_norm_real
-#define NORM_CODE \
-  { \
-    typename FieldType<A>::type val=0; \
-    Dune::dvverb << INDENT << "Infinity Norm of Expression\n"; \
-    ++INDENT; \
-    for (size_t i=0; i<a.N(); ++i) { val += eval_one_norm_real(a[i]); } \
-    --INDENT; \
-    return val; \
-  }
-#define VAL_CODE { return std::abs(a); }
-#include "exprtmpl/norm.inc"
-
-  template<class K>
-  inline K eval_one_norm_real (const std::complex<K>& c)
-  {
-    return eval_one_norm_real(c.real()) + eval_one_norm_real(c.imag());
-  }
-
-  template <class A>
-  typename FieldType<A>::type
-  one_norm_real (const A & a)
-  {
-    return eval_one_norm_real(a);
-  }
-
-  /* two norm sqrt(sum over squared values of entries) */
-
-  template <class A>
-  typename FieldType<A>::type
-  two_norm (const A & a)
-  {
-    return sqrt(eval_two_norm2(a));
-  }
-
-  /* sqare of two norm (sum over squared values of entries), need for block recursion */
-
-#define NORM eval_two_norm2
-#define NORM_CODE \
-  { \
-    typename FieldType<A>::type val=0; \
-    Dune::dvverb << INDENT << "Infinity Norm of Expression\n"; \
-    ++INDENT; \
-    for (size_t i=0; i<a.N(); ++i) { val += eval_two_norm2(a[i]); } \
-    --INDENT; \
-    return val; \
-  }
-#define VAL_CODE { return a*a; }
-#include "exprtmpl/norm.inc"
-
-  template<class K>
-  inline K eval_two_norm2 (const std::complex<K>& c)
-  {
-    return c.real()*c.real() + c.imag()*c.imag();
-  }
-
-  template <class A>
-  typename FieldType<A>::type
-  two_norm2 (const A & a)
-  {
-    return eval_two_norm2(a);
-  }
-
-  /* infinity norm (maximum of absolute values of entries) */
-
-#define NORM eval_infinity_norm
-#define NORM_CODE { \
-    typename FieldType<A>::type val=0; \
-    Dune::dvverb << INDENT << "Infinity Norm of Expression\n"; \
-    ++INDENT; \
-    for (size_t i=0; i<a.N(); ++i) { val = std::max(val,eval_infinity_norm(a[i])); } \
-    --INDENT; \
-    return val; \
-}
-#define VAL_CODE { return a; }
-#include "exprtmpl/norm.inc"
-
-  template <class A>
-  typename FieldType<A>::type
-  infinity_norm (const A & a)
-  {
-    return eval_infinity_norm(a);
-  }
-
-  /* simplified infinity norm (uses Manhattan norm for complex values) */
-
-#define NORM eval_infinity_norm_real
-#define NORM_CODE { \
-    typename FieldType<A>::type val=0; \
-    Dune::dvverb << INDENT << "Infinity Norm of Expression\n"; \
-    ++INDENT; \
-    for (size_t i=0; i<a.N(); ++i) { val = std::max(val,eval_infinity_norm(a[i])); } \
-    --INDENT; \
-    return val; \
-}
-#define VAL_CODE { return std::abs(a); }
-#include "exprtmpl/norm.inc"
-
-  template<class K>
-  inline K eval_infinity_norm_real (const std::complex<K>& c)
-  {
-    return eval_one_norm_real(c.real()) + eval_one_norm_real(c.imag());
-  }
-
-  template <class A>
-  typename FieldType<A>::type
-  infinity_norm_real (const A & a)
-  {
-    return eval_infinity_norm(a);
-  }
-
-  /* vector * vector */
-
-  namespace ExprTmpl {
-
-    // Vector * Vector
-    template <class A>
-    typename FieldType<A>::type
-    operator * (const Vector<A> & a, const Vector<A> & b)
-    {
-      assert(a.N() == b.N());
-      typename FieldType<A>::type x = 0;
-      for (size_t i=0; i<a.N(); i++)
-        x = a[i] * b[i];
-      return x;
-    }
-
-    // Expression * Vector
-    template <class A, class B>
-    typename FieldType<A>::type
-    operator * (const Vector<A> & a, const Expression<B> & b)
-    {
-      dune_static_assert((is_same<FieldType<A>,FieldType<B> >::value),
-                         "Field types of both operands must match!");
-      assert(a.N() == b.N());
-      typename FieldType<A>::type x = 0;
-      for (size_t i=0; i<a.N(); i++)
-        x = a[i] * b[i];
-      return x;
-    }
-
-    // Vector * Expression
-    template <class A, class B>
-    typename FieldType<A>::type
-    operator * (const Expression<A> & a, const Vector<B> & b)
-    {
-      dune_static_assert((is_same<FieldType<A>,FieldType<B> >::value),
-                         "Field types of both operands must match!");
-      assert(a.N() == b.N());
-      typename FieldType<A>::type x = 0;
-      for (size_t i=0; i<a.N(); i++)
-        x = a[i] * b[i];
-      return x;
-    }
-
-  } // namespace ExprTmpl
-
-} // namespace Dune
-
-#endif // DUNE_EXPRTMPL_HH
diff --git a/common/exprtmpl/.gitignore b/common/exprtmpl/.gitignore
deleted file mode 100644
index 282522db0..000000000
--- a/common/exprtmpl/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/common/exprtmpl/Makefile.am b/common/exprtmpl/Makefile.am
deleted file mode 100644
index 1db37157c..000000000
--- a/common/exprtmpl/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-# $Id: $
-SOURCES = exprexpr.inc  norm.inc  scalar.inc
-
-exprtmpldir = $(includedir)/dune/common/exprtmpl
-exprtmpl_HEADERS = $(SOURCES)
-
-include $(top_srcdir)/am/global-rules
diff --git a/common/exprtmpl/exprexpr.inc b/common/exprtmpl/exprexpr.inc
deleted file mode 100644
index 861c2c6dc..000000000
--- a/common/exprtmpl/exprexpr.inc
+++ /dev/null
@@ -1,136 +0,0 @@
-// -*- C++ -*-
-#ifndef OP
-#error OP undefined
-#endif
-
-namespace ExprTmpl {
-
-template <class A, class B>
-class ExpressionOpExpression
-{
-public:
-//#warning compare field_type of class A and B and choose infomation richest one!
-  typedef typename FieldType<A>::type field_type;
-  typedef typename BlockType<A>::type block_type;
-  typedef typename BlockExpression<ExpressionOpExpression>::type BlockExpr;
-  ExpressionOpExpression (const Expression<A> & _a, const Expression<B> & _b)
-    : a(_a), b(_b) {
-#ifdef DUNE_ISTL_WITH_CHECKING
-      assert(a.N() == b.N());
-#endif
-  }
-  BlockExpr operator[] (int i) const {
-    return a[i] OP b[i];
-  }
-  int N() const { return a.N(); };
-private:
-  Expression<A> a;
-  Expression<B> b;
-};
-
-// Expression op Expression
-template <class A, class B>
-Expression< ExpressionOpExpression<A,B> >
-operator OP (const Expression<A> & a, const Expression<B> & b)
-{
-  ExpressionOpExpression<A,B> ex(a, b);
-  return Expression< ExpressionOpExpression<A,B> >(ex);
-}
-
-// Expression op Vector
-template <class A, class B>
-Expression< ExpressionOpExpression<A, ConstRef<B> > >
-operator OP (const Expression<A> & a, const Vector<B> & b)
-{
-  ConstRef<B> rb(b);
-  ExpressionOpExpression<A, ConstRef<B> > ex(a, rb);
-  return Expression< ExpressionOpExpression<A, ConstRef<B> > >(ex);
-}
-
-// Expression op FieldVector<K,1>
-template <class A, class K>
-K operator OP (const Expression<A> & a,
-               const Expression< ConstRef< FieldVector<K,1> > >& b)
-{
-  return a OP b[0];
-}
-
-// Vector op Expression
-template <class A, class B>
-Expression< ExpressionOpExpression< ConstRef<A>, B> >
-operator OP (const Vector<A> & a, const Expression<B> & b)
-{
-  ConstRef<A> ra(a);
-  ExpressionOpExpression< ConstRef<A>, B> ex(ra, b);
-  return Expression< ExpressionOpExpression<ConstRef<A>, B> >(ex);
-}
-
-// FieldVector<K,1> op Expression
-template <class K, class B>
-K operator OP (const Expression< ConstRef< FieldVector<K,1> > > & a,
-               const Expression<B> & b)
-{
-  return a[0] OP b;
-}
-
-// Vector op Vector
-template <class V>
-Expression< ExpressionOpExpression< ConstRef<V>, ConstRef<V> > >
-operator OP (const Vector<V> & a, const Vector<V> & b)
-{
-  ConstRef<V> ra(a);
-  ConstRef<V> rb(b);
-  ExpressionOpExpression< ConstRef<V>, ConstRef<V> > ex(ra, rb);
-  return Expression< ExpressionOpExpression< ConstRef<V>, ConstRef<V> > >(ex);
-}
-
-// FieldVector<K,1> op FieldVector<K,1>
-template <class K>
-K operator OP (const Expression< ConstRef< FieldVector<K,1> > > & a,
-               const Expression< ConstRef< FieldVector<K,1> > > & b)
-{
-  return a[0] OP b[0];
-}
-
-// TypeTraits
-template<class A, class B>
-struct BlockExpression< ExpressionOpExpression<A,B> >
-{
-  typedef
-  typename SelectType<
-    // decide whether we are at the and of the recusrion
-    isEndOfExpressionRecusion<typename BlockType<A>::type>::value,
-    // select FieldType if where are at the end of the recursion
-    typename FieldType<A>::type,
-    // construct nested expression otherwise
-    ExprTmpl::Expression<
-    ExprTmpl::ExpressionOpExpression<
-      typename ExpressionImp< typename BlockExpression<
-        typename ExpressionImp<A>::type>::type>::type,
-      typename ExpressionImp< typename BlockExpression<
-        typename ExpressionImp<B>::type>::type>::type > >
-  >::Type type;
-};
-
-template <class A, class B>
-struct ExpressionImp< ExpressionOpExpression<A,B> >
-{
-  typedef ExpressionOpExpression<A,B> type;
-};
-
-}
-
-template <class A, class B>
-struct FieldType< ExprTmpl::ExpressionOpExpression<A,B> >
-{
-  typedef typename FieldType<A>::type type;
-};
-  
-template <class A, class B>
-struct BlockType< ExprTmpl::ExpressionOpExpression<A,B> >
-{
-  typedef typename BlockType<A>::type type;
-};
-  
-#undef ExpressionOpExpression
-#undef OP
diff --git a/common/exprtmpl/norm.inc b/common/exprtmpl/norm.inc
deleted file mode 100644
index b01127787..000000000
--- a/common/exprtmpl/norm.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-#ifndef NORM
-#error NORM undefined
-#endif
-
-#ifndef NORM_CODE
-#error NORM_CODE undefined
-#endif
-
-#ifndef VAL_CODE
-#error VAL_CODE undefined
-#endif
-
-template <class A>
-typename FieldType<A>::type
-NORM (const ExprTmpl::Expression<A> & a)
-{
-  NORM_CODE
-}
-
-template <class A>
-typename FieldType<A>::type
-NORM (const ExprTmpl::Vector<A> & a)
-{
-  NORM_CODE
-}
-
-/*
-template <class A>
-double
-ExprTmpl::Expression<A>::NORM () const
-{
-  const ExprTmpl::Expression<A> & a = *this;
-  NORM_CODE
-}
-
-template <class A>
-double
-ExprTmpl::Vector<A>::NORM () const
-{
-  const ExprTmpl::Vector<A> & a = *this;
-  NORM_CODE
-}
-
-template <class A>
-double
-ExprTmpl::ConstRef<A>::NORM () const
-{
-  const ExprTmpl::ConstRef<A> & a = *this;
-  NORM_CODE
-}
-*/
-
-inline double
-NORM (const double & a)
-{
-  VAL_CODE
-}
-
-inline float
-NORM (const float & a)
-{
-  VAL_CODE
-}
-
-inline int
-NORM (const int & a)
-{
-  VAL_CODE
-}
-
-#undef NORM
-#undef NORM_CODE
-#undef VAL_CODE
diff --git a/common/exprtmpl/scalar.inc b/common/exprtmpl/scalar.inc
deleted file mode 100644
index e943d045a..000000000
--- a/common/exprtmpl/scalar.inc
+++ /dev/null
@@ -1,185 +0,0 @@
-// -*- C++ -*-
-#ifndef OP
-#error OP undefined
-#endif
-
-#ifdef ExpressionOpScalar
-
-namespace ExprTmpl {
-
-template <class A>
-class ExpressionOpScalar
-{
-public:
-  typedef typename FieldType<A>::type field_type;
-  typedef typename BlockType<A>::type block_type;
-  typedef typename BlockExpression<ExpressionOpScalar>::type BlockExpr;
-  ExpressionOpScalar (const Expression<A> & _a,
-            const typename FieldType<A>::type & _lambda)
-    : a(_a), lambda(_lambda) {}
-  BlockExpr operator[] (int i) const {
-    return a[i] OP lambda;
-  }
-  int N() const { return a.N(); };
-private:
-  Expression<A> a;
-  const field_type lambda;
-};
-
-// Scalar op FieldVector<K,1>
-template <class K>
-K operator OP (const Expression< ConstRef< FieldVector<K,1> > > & a,
-               const K & lambda)
-{
-  return a[0] OP lambda;
-}
-
-// Vector op Scalar
-template <class A>
-Expression< ExpressionOpScalar<ConstRef<A> > >
-operator OP (const Vector<A> & a, const typename FieldType<A>::type & lambda)
-{
-  ConstRef<A> ra(a);
-  ExpressionOpScalar< ConstRef<A> > ex(ra, lambda);
-  return Expression< ExpressionOpScalar<ConstRef<A> > >(ex);
-}
-
-// Expression op Scalar
-template <class A>
-Expression< ExpressionOpScalar<A> >
-operator OP (const Expression<A> & a, const typename FieldType<A>::type & lambda)
-{
-  ExpressionOpScalar<A> ex(a, lambda);
-  return Expression< ExpressionOpScalar<A> >(ex);
-}
-
-// TypeTraits
-//#warning Kann hier nicht das innere ExpressionImp weg?
-template <class Ex>
-struct BlockExpression< ExprTmpl::ExpressionOpScalar<Ex> >
-{
-  typedef
-  typename SelectType<
-    isEndOfExpressionRecusion< typename BlockType<Ex>::type >::value,
-    typename FieldType<Ex>::type,
-    ExprTmpl::Expression<
-    ExprTmpl::ExpressionOpScalar<typename ExpressionImp<
-      typename BlockExpression<
-        typename ExpressionImp<Ex>::type>::type>::type > >
-  >::Type type;
-};
-
-template <class Ex>
-struct ExpressionImp< ExprTmpl::ExpressionOpScalar<Ex> >
-{
-  typedef ExprTmpl::ExpressionOpScalar< Ex > type;
-};
-
-} // namespace ExprTmpl
-
-template <class A>
-struct FieldType< ExprTmpl::ExpressionOpScalar<A> >
-{
-  typedef typename FieldType<A>::type type;
-};
-
-template <class A>
-struct BlockType< ExprTmpl::ExpressionOpScalar<A> >
-{
-  typedef typename BlockType<A>::type type;
-};
-  
-#undef ExpressionOpScalar
-
-#endif
-
-#ifdef ScalarOpExpression
-
-namespace ExprTmpl {
-
-template <class A>
-class ScalarOpExpression
-{
-public:
-  typedef typename FieldType<A>::type field_type;
-  typedef typename BlockType<A>::type block_type;
-  typedef typename BlockExpression<ScalarOpExpression>::type BlockExpr;
-  ScalarOpExpression (const Expression<A> & _a,
-            const typename FieldType<A>::type & _lambda)
-    : a(_a), lambda(_lambda) {}
-  BlockExpr operator[] (int i) const {
-    return lambda OP a[i];
-  }
-  int N() const { return a.N(); };
-private:
-  Expression<A> a;
-  const field_type lambda;
-};
-
-// Scalar op FieldVector<K,1>
-template <class K>
-K operator OP (const K & lambda,
-               const Expression< ConstRef< FieldVector<K,1> > > & a)
-{
-  return lambda OP a[0];
-}
-
-// Scalar op Vector
-template <class A>
-Expression< ScalarOpExpression<ConstRef<A> > >
-operator OP (const typename FieldType<A>::type & lambda, const Vector<A> & a)
-{
-  ConstRef<A> ra(a);
-  ScalarOpExpression< ConstRef<A> > ex(ra, lambda);
-  return Expression< ScalarOpExpression<ConstRef<A> > >(ex);
-}
-
-// Scalar op Expression
-template <class A>
-Expression< ScalarOpExpression<A> >
-operator OP (const typename FieldType<A>::type & lambda, const Expression<A> & a)
-{
-  ScalarOpExpression<A> ex(a, lambda);
-  return Expression< ScalarOpExpression<A> >(ex);
-}
-
-// TypeTraits
-template <class Ex>
-struct BlockExpression< ExprTmpl::ScalarOpExpression<Ex> >
-{
-  typedef
-  typename SelectType<
-    isEndOfExpressionRecusion< typename BlockType<Ex>::type >::value,
-    typename FieldType<Ex>::type,
-    ExprTmpl::Expression<
-    ExprTmpl::ScalarOpExpression<typename ExpressionImp<
-      typename BlockExpression<
-        typename ExpressionImp<Ex>::type>::type>::type > >
-  >::Type type;
-};
-
-template <class Ex>
-struct ExpressionImp< ExprTmpl::ScalarOpExpression<Ex> >
-{
-  typedef ExprTmpl::ScalarOpExpression< Ex > type;
-};
-
-} // namespace ExprTmpl
-
-template <class A>
-struct FieldType< ExprTmpl::ScalarOpExpression<A> >
-{
-  typedef typename FieldType<A>::type type;
-};
-
-template <class A>
-struct BlockType< ExprTmpl::ScalarOpExpression<A> >
-{
-  typedef typename BlockType<A>::type type;
-};
-  
-#undef ScalarOpExpression
-
-#endif
-
-#undef OP
diff --git a/common/fassign.hh b/common/fassign.hh
deleted file mode 100644
index 3e56bd528..000000000
--- a/common/fassign.hh
+++ /dev/null
@@ -1,278 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_ASSIGN_HH
-#define DUNE_ASSIGN_HH
-
-#include <dune/common/fvector.hh>
-#include <dune/common/fmatrix.hh>
-
-namespace Dune {
-
-  /**
-   * @file
-   * @brief Classes for implementing an assignment to FieldVector from a comma-separated list
-   */
-  /** @addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * Emtpy namespace make this class and the object local to one object file
-   */
-  namespace {
-
-    /**
-     *  @brief Initializer class for
-     *
-     *  overload operator <<= for FieldVector assignment from Dune::Zero
-     */
-    struct Zero {
-      Zero (int) {};
-      /** \brief Conversion operator to double */
-      operator double () { return 0.0; }
-      /** \brief Conversion operator to int */
-      operator int () { return 0; }
-    } zero = 0;
-
-    /**
-     *  @brief Marker class for next row
-     *
-     *  overload operator <<= for FiledMatrix assignment
-     */
-    struct NextRow {
-      NextRow (int) {};
-    } nextRow = 0;
-
-  } // end empty namespace
-
-  /**
-   *  @brief fvector assignment operator
-   *
-   *  overload operator <<= for fvector assignment from Dune::Zero
-   *
-   *  after including fassing.hh you can easily assign data to a FieldVector
-   *  using
-   *
-   *  @code
-   *  FieldVector<double, 4> x; x <<= 1.0, 4.0, 10.0, 11.0;
-   *  @endcode
-   *
-   *  The operator checks that the whole vector is initalized.
-   *  In case you know that all following entries will be zero padded, you can use
-   *
-   *  @code
-   *  FieldVector<double, 40> x; x <<= 1.0, 4.0, 10.0, 11.0, zero;
-   *  @endcode
-   *
-   */
-  template <class T, int s>
-  class fvector_assigner
-  {
-  private:
-    FieldVector<T,s> & v;
-    int c;
-    bool temporary;
-  public:
-    /*! @brief Copy Constructor */
-    fvector_assigner(fvector_assigner & a) : v(a.v), c(a.c), temporary(false)
-    {}
-    /*! @brief Constructor from vector and temporary flag
-       \param v vector which should be initialized
-       \param t bool indicating, that this is a temporary object (see ~fvector_assigner)
-     */
-    fvector_assigner(FieldVector<T,s> & _v, bool t) : v(_v), c(0), temporary(t)
-    {};
-    /*! @brief Destructor
-       checks for complete initialization of the vector.
-       The check is skipped, if this object is marked temporary.
-     */
-    ~fvector_assigner()
-    {
-      if (!temporary && c!=s)
-        DUNE_THROW(MathError, "Trying to assign " << c <<
-                   " entries to a FieldVector of size " << s);
-    }
-    /*! @brief append data to this vector */
-    fvector_assigner & append (const T & t)
-    {
-      v[c++] = t;
-      return *this;
-    }
-    /*! @brief append zeros to this vector
-     */
-    fvector_assigner & append (Zero z)
-    {
-      while (c!=s) v[c++] = 0;
-      return *this;
-    }
-    /*! @brief append data to this vector
-       the overloaded comma operator is used to assign a comma seperated list
-       of values to the vector
-     */
-    fvector_assigner & operator , (const T & t)
-    {
-      return append(t);
-    }
-    /*! @brief append zeros to this vector
-       the overloaded comma operator is used to stop the assign of values
-       to the vector, all remaining entries are assigned 0.
-     */
-    fvector_assigner & operator , (Zero z)
-    {
-      return append(z);
-    }
-  };
-
-  /**
-   *  @brief fvector assignment operator
-   *
-   *  overload operator <<= for fvector assignment
-   *  from comma seperated list of values
-   */
-  template <class T, int s>
-  fvector_assigner<T,s> operator <<= (FieldVector<T,s> & v, const T & t)
-  {
-    return fvector_assigner<T,s>(v,true).append(t);
-  }
-
-  /**
-   *  @brief fvector assignment operator
-   *
-   *  overload operator <<= for fvector assignment from Dune::Zero
-   */
-  template <class T, int s>
-  fvector_assigner<T,s> operator <<= (FieldVector<T,s> & v, Zero z)
-  {
-    return fvector_assigner<T,s>(v,true).append(z);
-  }
-
-  /**
-   *  @brief fvector assignment operator
-   *
-   *  overload operator <<= for fvector assignment from Dune::Zero
-   *
-   *  after including fassing.hh you can easily assign data to a FieldVector
-   *  using
-   *
-   *  @code
-   *  FieldVector<double, 4> x; x <<= 1.0, 4.0, 10.0, 11.0;
-   *  @endcode
-   *
-   *  The operator checks that the whole vector is initalized.
-   *  In case you know that all following entries will be zero padded, you can use
-   *
-   *  @code
-   *  FieldVector<double, 40> x; x <<= 1.0, 4.0, 10.0, 11.0, zero;
-   *  @endcode
-   *
-   */
-  template <class T, int n, int m>
-  class fmatrix_assigner
-  {
-  private:
-    FieldMatrix<T,n,m> & A;
-    int c;
-    int r;
-    bool temporary;
-    void end_row()
-    {
-      if (!temporary && c!=m)
-        DUNE_THROW(MathError, "Trying to assign " << c <<
-                   " entries to a FieldMatrix row of size " << m);
-      c=0;
-    }
-  public:
-    /*! @brief Copy Constructor */
-    fmatrix_assigner(fmatrix_assigner & a) : A(a.A), c(a.c), r(a.r), temporary(false)
-    {}
-    /*! @brief Constructor from matrix and temporary flag
-       \param v matrix which should be initialized
-       \param t bool indicating, that this is a temporary object (see ~fmatrix_assigner)
-     */
-    fmatrix_assigner(FieldMatrix<T,n,m> & _A, bool t) : A(_A), c(0), r(0), temporary(t)
-    {};
-    /*! @brief Destructor
-       checks for complete initialization of the matrix.
-       The check is skipped, if this object is marked temporary.
-     */
-    ~fmatrix_assigner()
-    {
-      end_row();
-      if (!temporary && r!=n-1)
-        DUNE_THROW(MathError, "Trying to assign " << r <<
-                   " rows to a FieldMatrix of size " << n << " x " << m);
-    }
-    /*! @brief append data to this matrix */
-    fmatrix_assigner & append (const T & t)
-    {
-      A[r][c++] = t;
-      return *this;
-    }
-    /*! @brief append zeros to this matrix
-     */
-    fmatrix_assigner & append (Zero z)
-    {
-      while (c!=m) A[r][c++] = 0;
-      return *this;
-    }
-    /*! @brief append zeros to this matrix
-     */
-    fmatrix_assigner & append (NextRow nr)
-    {
-      end_row();
-      r++;
-      return *this;
-    }
-    /*! @brief append data to this matrix
-       the overloaded comma operator is used to assign a comma seperated list
-       of values to the matrix
-     */
-    fmatrix_assigner & operator , (const T & t)
-    {
-      return append(t);
-    }
-    /*! @brief append zeros to this matrix
-       the overloaded comma operator is used to stop the assign of values
-       to the matrix, all remaining entries are assigned 0.
-     */
-    fmatrix_assigner & operator , (Zero z)
-    {
-      return append(z);
-    }
-    /*! @brief append zeros to this matrix
-       the overloaded comma operator is used to stop the assign of values
-       to the matrix, all remaining entries are assigned 0.
-     */
-    fmatrix_assigner & operator , (NextRow nr)
-    {
-      return append(nr);
-    }
-  };
-
-  /**
-   *  @brief FieldMatrix assignment operator
-   *
-   *  overload operator <<= for FieldMatrix assignment
-   *  from comma seperated list of values
-   */
-  template <class T, int n, int m>
-  fmatrix_assigner<T,n,m> operator <<= (FieldMatrix<T,n,m> & v, const T & t)
-  {
-    return fmatrix_assigner<T,n,m>(v,true).append(t);
-  }
-
-  /**
-   *  @brief fFileMatrix assignment operator
-   *
-   *  overload operator <<= for FieldMatrix row assignment from Dune::Zero
-   */
-  template <class T, int n, int m>
-  fmatrix_assigner<T,n,m> operator <<= (FieldMatrix<T,n,m> & v, Zero z)
-  {
-    return fmatrix_assigner<T,n,m>(v,true).append(z);
-  }
-
-} // end namespace Dune
-
-#endif // DUNE_ASSIGN_HH
diff --git a/common/finitestack.hh b/common/finitestack.hh
deleted file mode 100644
index 4bd1b5d3d..000000000
--- a/common/finitestack.hh
+++ /dev/null
@@ -1,84 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_FINITE_STACK_HH
-#define DUNE_FINITE_STACK_HH
-
-#include <dune/common/exceptions.hh>
-
-namespace Dune {
-
-  /*! \addtogroup Common
-     @{
-   */
-
-  /*! \file
-
-     This file implements a stack classes FiniteStack. It is
-     mainly used by the grid iterators where exact knowledge of the stack
-     implementation is needed to guarantee efficient execution.
-   */
-
-  /** \brief A stack with static memory allocation
-   *
-     This class implements a very efficient stack where the maximum
-     depth is known in advance. Note that no error checking is
-     performed!
-
-     \param n Maximum number of stack entries
-   */
-  template<class T, int n>
-  class FiniteStack {
-  public:
-
-    //! Returns true if the stack is empty
-    bool empty () const
-    {
-      return f==0;
-    }
-
-    //! Returns true if the stack is full
-    bool full () const
-    {
-      return f>=n;
-    }
-
-    //! Puts a new object onto the stack
-    void push (const T& t)
-    {
-      s[f++] = t;
-    }
-
-    //! Removes and returns the uppermost object from the stack
-    T pop ()
-    {
-      return s[--f];
-    }
-
-    //! Returns the uppermost object on the stack
-    T top () const
-    {
-      return s[f-1];
-    }
-
-    //! Dynamic stacksize
-    int size () const
-    {
-      return f;
-    }
-
-    //! Makes empty stack
-    FiniteStack ()
-    {
-      f = 0;
-    }
-
-  private:
-    T s[n];
-    int f;
-  };
-
-}
-
-//! }@
-
-#endif
diff --git a/common/fixedarray.hh b/common/fixedarray.hh
deleted file mode 100644
index d9be9f886..000000000
--- a/common/fixedarray.hh
+++ /dev/null
@@ -1,13 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_FIXEDARRAY_HH
-#define DUNE_FIXEDARRAY_HH
-
-/** \file
-    \brief For backward compatibility: include array.hh and issue a warning
- */
-
-#warning This file is deprecated.  Please use array.hh instead!
-#include <dune/common/array.hh>
-
-#endif
diff --git a/common/float_cmp.cc b/common/float_cmp.cc
deleted file mode 100644
index 8a85acc51..000000000
--- a/common/float_cmp.cc
+++ /dev/null
@@ -1,482 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include "float_cmp.hh"
-
-#include <vector>
-#include <limits>
-#include <algorithm>
-#include <cstdlib>
-#include <dune/common/fvector.hh>
-
-namespace Dune {
-
-
-  namespace FloatCmp {
-    // traits
-    //! Mapping of value type to epsilon type
-    /**
-     * @ingroup FloatCmp
-     * @tparam T The value type
-     */
-    template<class T> struct EpsilonType {
-      //! The epsilon type corresponding to value type T
-      typedef T Type;
-    };
-    //! Specialization of EpsilonType for std::vector
-    /**
-     * @ingroup FloatCmp
-     * @tparam T The value_type of the std::vector
-     * @tparam A The Allocator of the std::vector
-     */
-    template<class T, typename A>
-    struct EpsilonType<std::vector<T, A> > {
-      //! The epsilon type corresponding to value type std::vector<T, A>
-      typedef EpsilonType<T> Type;
-    };
-    //! Specialization of EpsilonType for Dune::FieldVector
-    /**
-     * @ingroup FloatCmp
-     * @tparam T The field_type of the Dune::FieldVector
-     * @tparam n The size of the Dune::FieldVector
-     */
-    template<class T, int n>
-    struct EpsilonType<FieldVector<T, n> > {
-      //! The epsilon type corresponding to value type Dune::FieldVector<T, n>
-      typedef EpsilonType<T> Type;
-    };
-
-    // default epsilon
-    template<class T>
-    struct DefaultEpsilon<T, relativeWeak> {
-      static typename EpsilonType<T>::Type value()
-      { return std::numeric_limits<typename EpsilonType<T>::Type>::epsilon()*8; }
-    };
-    template<class T>
-    struct DefaultEpsilon<T, relativeStrong> {
-      static typename EpsilonType<T>::Type value()
-      { return std::numeric_limits<typename EpsilonType<T>::Type>::epsilon()*8; }
-    };
-    template<class T>
-    struct DefaultEpsilon<T, absolute> {
-      static typename EpsilonType<T>::Type value()
-      { return std::max(std::numeric_limits<typename EpsilonType<T>::Type>::epsilon(), 1e-6); }
-    };
-
-    namespace Detail {
-      // basic comparison
-      template<class T, CmpStyle style = defaultCmpStyle>
-      struct eq_t;
-      template<class T>
-      struct eq_t<T, relativeWeak> {
-        static bool eq(const T &first,
-                       const T &second,
-                       typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T>::value())
-        { return std::abs(first - second) <= epsilon*std::max(std::abs(first), std::abs(second)); }
-      };
-      template<class T>
-      struct eq_t<T, relativeStrong> {
-        static bool eq(const T &first,
-                       const T &second,
-                       typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T>::value())
-        { return std::abs(first - second) <= epsilon*std::min(std::abs(first), std::abs(second)); }
-      };
-      template<class T>
-      struct eq_t<T, absolute> {
-        static bool eq(const T &first,
-                       const T &second,
-                       typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T>::value())
-        { return std::abs(first-second) <= epsilon; }
-      };
-      template<class T, CmpStyle cstyle>
-      struct eq_t<std::vector<T>, cstyle> {
-        static bool eq(const std::vector<T> &first,
-                       const std::vector<T> &second,
-                       typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T>::value()) {
-          unsigned int size = first.size();
-          if(size != second.size()) return false;
-          for(unsigned int i = 0; i < size; ++i)
-            if(!eq_t<T, cstyle>(first[i], second[i], epsilon))
-              return false;
-          return true;
-        }
-      };
-      template<class T, int n, CmpStyle cstyle>
-      struct eq_t<Dune::FieldVector<T, n>, cstyle> {
-        static bool eq(const Dune::FieldVector<T, n> &first,
-                       const Dune::FieldVector<T, n> &second,
-                       typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T>::value()) {
-          for(int i = 0; i < n; ++i)
-            if(!eq_t<T, cstyle>(first[i], second[i], epsilon))
-              return false;
-          return true;
-        }
-      };
-    } // namespace Detail
-
-    // operations in functional style
-    template <class T, CmpStyle style>
-    bool eq(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return Detail::eq_t<T, style>::eq(first, second, epsilon);
-    }
-    template <class T, CmpStyle style>
-    bool ne(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return !eq<T, style>(first, second, epsilon);
-    }
-    template <class T, CmpStyle style>
-    bool gt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return first > second && ne<T, style>(first, second, epsilon);
-    }
-    template <class T, CmpStyle style>
-    bool lt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return first < second && ne<T, style>(first, second, epsilon);
-    }
-    template <class T, CmpStyle style>
-    bool ge(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return first > second || eq<T, style>(first, second, epsilon);
-    }
-    template <class T, CmpStyle style>
-    bool le(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon)
-    {
-      return first < second || eq<T, style>(first, second, epsilon);
-    }
-
-    // default template arguments
-    template <class T>
-    bool eq(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return eq<T, defaultCmpStyle>(first, second, epsilon);
-    }
-    template <class T>
-    bool ne(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return ne<T, defaultCmpStyle>(first, second, epsilon);
-    }
-    template <class T>
-    bool gt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return gt<T, defaultCmpStyle>(first, second, epsilon);
-    }
-    template <class T>
-    bool lt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return lt<T, defaultCmpStyle>(first, second, epsilon);
-    }
-    template <class T>
-    bool ge(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return ge<T, defaultCmpStyle>(first, second, epsilon);
-    }
-    template <class T>
-    bool le(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return le<T, defaultCmpStyle>(first, second, epsilon);
-    }
-
-    // rounding operations
-    namespace Detail {
-      template<class I, class T, CmpStyle cstyle = defaultCmpStyle, RoundingStyle rstyle = defaultRoundingStyle>
-      struct round_t;
-      template<class I, class T, CmpStyle cstyle>
-      struct round_t<I, T, cstyle, downward> {
-        static I
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          // first get an approximation
-          I lower = I(val);
-          I upper;
-          if(eq<T, cstyle>(T(lower), val, epsilon)) return lower;
-          if(T(lower) > val) { upper = lower; lower--; }
-          else upper = lower+1;
-          if(le<T, cstyle>(val - T(lower), T(upper) - val, epsilon))
-            return lower;
-          else return upper;
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct round_t<I, T, cstyle, upward> {
-        static I
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          // first get an approximation
-          I lower = I(val);
-          I upper;
-          if(eq<T, cstyle>(T(lower), val, epsilon)) return lower;
-          if(T(lower) > val) { upper = lower; lower--; }
-          else upper = lower+1;
-          if(lt<T, cstyle>(val - T(lower), T(upper) - val, epsilon))
-            return lower;
-          else return upper;
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct round_t<I, T, cstyle, towardZero> {
-        static I
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          if(val > T(0))
-            return round_t<I, T, cstyle, downward>::round(val, epsilon);
-          else return round_t<I, T, cstyle, upward>::round(val, epsilon);
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct round_t<I, T, cstyle, towardInf> {
-        static I
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          if(val > T(0))
-            return round_t<I, T, cstyle, upward>::round(val, epsilon);
-          else return round_t<I, T, cstyle, downward>::round(val, epsilon);
-        }
-      };
-      template<class I, class T, CmpStyle cstyle, RoundingStyle rstyle>
-      struct round_t<std::vector<I>, std::vector<T>, cstyle, rstyle> {
-        static std::vector<I>
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          unsigned int size = val.size();
-          std::vector<I> res(size);
-          for(unsigned int i = 0; i < size; ++i)
-            res[i] = round_t<I, T, cstyle, rstyle>::round(val[i], epsilon);
-          return res;
-        }
-      };
-      template<class I, class T, int n, CmpStyle cstyle, RoundingStyle rstyle>
-      struct round_t<Dune::FieldVector<I, n>, Dune::FieldVector<T, n>, cstyle, rstyle> {
-        static Dune::FieldVector<I, n>
-        round(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          Dune::FieldVector<I, n> res;
-          for(int i = 0; i < n; ++i)
-            res[i] = round_t<I, T, cstyle, rstyle>::round(val[i], epsilon);
-          return res;
-        }
-      };
-    } // namespace Detail
-    template<class I, class T, CmpStyle cstyle, RoundingStyle rstyle>
-    I round(const T &val, typename EpsilonType<T>::Type epsilon /*= DefaultEpsilon<T, cstyle>::value()*/)
-    {
-      return Detail::round_t<I, T, cstyle, rstyle>::round(val, epsilon);
-    }
-    template<class I, class T, CmpStyle cstyle>
-    I round(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, cstyle>::value())
-    {
-      return round<I, T, cstyle, defaultRoundingStyle>(val, epsilon);
-    }
-    template<class I, class T, RoundingStyle rstyle>
-    I round(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return round<I, T, defaultCmpStyle, rstyle>(val, epsilon);
-    }
-    template<class I, class T>
-    I round(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return round<I, T, defaultCmpStyle>(val, epsilon);
-    }
-
-    // truncation
-    namespace Detail {
-      template<class I, class T, CmpStyle cstyle = defaultCmpStyle, RoundingStyle rstyle = defaultRoundingStyle>
-      struct trunc_t;
-      template<class I, class T, CmpStyle cstyle>
-      struct trunc_t<I, T, cstyle, downward> {
-        static I
-        trunc(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          // this sould be optimized away unless needed
-          if(!std::numeric_limits<I>::is_signed)
-            // make sure this works for all useful cases even if I is an unsigned type
-            if(eq<T, cstyle>(val, T(0), epsilon)) return I(0);
-          // first get an approximation
-          I lower = I(val); // now |val-lower| < 1
-          // make sure we're really lower in case the cast truncated to an unexpected direction
-          if(T(lower) > val) lower--; // now val-lower < 1
-          // check whether lower + 1 is approximately val
-          if(eq<T, cstyle>(T(lower+1), val, epsilon))
-            return lower+1;
-          else return lower;
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct trunc_t<I, T, cstyle, upward> {
-        static I
-        trunc(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          I upper = trunc_t<I, T, cstyle, downward>::trunc(val, epsilon);
-          if(ne<T, cstyle>(T(upper), val, epsilon)) ++upper;
-          return upper;
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct trunc_t<I, T, cstyle, towardZero> {
-        static I
-        trunc(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          if(val > T(0)) return trunc_t<I, T, cstyle, downward>::trunc(val, epsilon);
-          else return trunc_t<I, T, cstyle, upward>::trunc(val, epsilon);
-        }
-      };
-      template<class I, class T, CmpStyle cstyle>
-      struct trunc_t<I, T, cstyle, towardInf> {
-        static I
-        trunc(const T &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          if(val > T(0)) return trunc_t<I, T, cstyle, upward>::trunc(val, epsilon);
-          else return trunc_t<I, T, cstyle, downward>::trunc(val, epsilon);
-        }
-      };
-      template<class I, class T, CmpStyle cstyle, RoundingStyle rstyle>
-      struct trunc_t<std::vector<I>, std::vector<T>, cstyle, rstyle> {
-        static std::vector<I>
-        trunc(const std::vector<T> &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          unsigned int size = val.size();
-          std::vector<I> res(size);
-          for(unsigned int i = 0; i < size; ++i)
-            res[i] = trunc_t<I, T, cstyle, rstyle>::trunc(val[i], epsilon);
-          return res;
-        }
-      };
-      template<class I, class T, int n, CmpStyle cstyle, RoundingStyle rstyle>
-      struct trunc_t<Dune::FieldVector<I, n>, Dune::FieldVector<T, n>, cstyle, rstyle> {
-        static Dune::FieldVector<I, n>
-        trunc(const Dune::FieldVector<T, n> &val,
-              typename EpsilonType<T>::Type epsilon = (DefaultEpsilon<T, cstyle>::value())) {
-          Dune::FieldVector<I, n> res;
-          for(int i = 0; i < n; ++i)
-            res[i] = trunc_t<I, T, cstyle, rstyle>::trunc(val[i], epsilon);
-          return res;
-        }
-      };
-    } // namespace Detail
-    template<class I, class T, CmpStyle cstyle, RoundingStyle rstyle>
-    I trunc(const T &val, typename EpsilonType<T>::Type epsilon /*= DefaultEpsilon<T, cstyle>::value()*/)
-    {
-      return Detail::trunc_t<I, T, cstyle, rstyle>::trunc(val, epsilon);
-    }
-    template<class I, class T, CmpStyle cstyle>
-    I trunc(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, cstyle>::value())
-    {
-      return trunc<I, T, cstyle, defaultRoundingStyle>(val, epsilon);
-    }
-    template<class I, class T, RoundingStyle rstyle>
-    I trunc(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return trunc<I, T, defaultCmpStyle, rstyle>(val, epsilon);
-    }
-    template<class I, class T>
-    I trunc(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, defaultCmpStyle>::value())
-    {
-      return trunc<I, T, defaultCmpStyle>(val, epsilon);
-    }
-  } //namespace Dune
-
-  // oo interface
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  FloatCmpOps<T, cstyle_, rstyle_>::
-  FloatCmpOps(EpsilonType epsilon) : epsilon_(epsilon) {}
-
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  typename FloatCmpOps<T, cstyle_, rstyle_>::EpsilonType
-  FloatCmpOps<T, cstyle_, rstyle_>::epsilon() const
-  {
-    return epsilon_;
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  void
-  FloatCmpOps<T, cstyle_, rstyle_>::epsilon(EpsilonType epsilon__)
-  {
-    epsilon_ = epsilon__;
-  }
-
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  eq(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::eq<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  ne(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::ne<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  gt(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::gt<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  lt(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::lt<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  ge(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::ge<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  bool FloatCmpOps<T, cstyle_, rstyle_>::
-  le(const ValueType &first, const ValueType &second) const
-  {
-    return Dune::FloatCmp::le<ValueType, cstyle>(first, second, epsilon_);
-  }
-
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  template<class I>
-  I FloatCmpOps<T, cstyle_, rstyle_>::
-  round(const ValueType &val) const
-  {
-    return Dune::FloatCmp::round<I, ValueType, cstyle, rstyle_>(val, epsilon_);
-  }
-
-  template<class T, FloatCmp::CmpStyle cstyle_, FloatCmp::RoundingStyle rstyle_>
-  template<class I>
-  I FloatCmpOps<T, cstyle_, rstyle_>::
-  trunc(const ValueType &val) const
-  {
-    return Dune::FloatCmp::trunc<I, ValueType, cstyle, rstyle_>(val, epsilon_);
-  }
-
-} //namespace Dune
diff --git a/common/float_cmp.hh b/common/float_cmp.hh
deleted file mode 100644
index def77d63e..000000000
--- a/common/float_cmp.hh
+++ /dev/null
@@ -1,370 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_COMMON_FLOAT_CMP_HH
-#define DUNE_COMMON_FLOAT_CMP_HH
-
-/**
-   @addtogroup FloatCmp FloatCmp
-   @ingroup Common
-
-   @section How_to_compare How to compare floats
-
-   When comparing floating point numbers for equality, one often faces the
-   problem that floating point operations are not always exact.  For example on
-   i386 the expression
-   @code
-    0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 == 2.0
-   @endcode
-   evaluates to
-   @code
-    1.99999999999999977796 == 2.00000000000000000000
-   @endcode
-   which is false.  The solution is to compare approximately, using an epsilon
-   with says how much deviation to accept.
-
-   The most straightforward way of comparing is using an @em absolute epsilon.
-   The comparison is done like
-   @code
-    abs(first-second) <= epsilon
-   @endcode
-   This has a severe disadvantage: if you have an epsilon like 1e-10 but first
-   and second are of the magnitude 1e-15 everything will compare equal which is
-   certainly not what you want.  This can be overcome by selecting an
-   appropriate epsilon.  Nethertheless this method of comparing is not
-   recommended in general, since we will present a more robus method in the
-   next paragraph.
-
-   There is another way of comparing approximately, using a @em relative
-   epsilon which is then scaled with first:
-   @code
-    abs(first-second) <= epsilon * abs(first)
-   @endcode
-   Of cource the comparison should be symmetric in first and second so we
-   cannot arbitrarily select either first or second to scale epsilon.  The are
-   two symmetric variants, @em relative_weak
-   @code
-    abs(first-second) <= epsilon * max(abs(first), abs(second))
-   @endcode
-   and @em relative_strong
-   @code
-    abs(first-second) <= epsilon * min(abs(first), abs(second))
-   @endcode
-   Both variants are good but in practice the relative_weak variant is
-   preferred.  This is also the default variant.
-
-   \note Although using a relative epsilon is better than using an absolute
-        epsilon, using a relative epsilon leads to problems if either first or
-        second equals 0.  In principle the relative method can be combined
-        with an absolute method using an epsilon near the minimum
-        representable positive value, but this is not implemented here.
-
-   There is a completely different way of comparing floats.  Instead of giving
-   an epsilon, the programmer states how many representable value are allowed
-   between first and second.  See the "Comparing using integers" section in
-   http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
-   for more about that.
-
-   @section Interface Interface
-
-   To do the comparison, you can use the free functions @link
-   Dune::FloatCmp::eq eq()@endlink, @link Dune::FloatCmp::ne ne()@endlink,
-   @link Dune::FloatCmp::gt gt()@endlink, @link Dune::FloatCmp::lt
-   lt()@endlink, @link Dune::FloatCmp::ge ge()@endlink and @link
-   Dune::FloatCmp::le le()@endlink from the namespace Dune::FloatCmp.  They
-   take the values to compare and optionally an epsilon, which defaults to 8
-   times the machine epsilon (the difference between 1.0 and the smallest
-   representable value > 1.0) for relative comparisons, or simply 1e-6 for
-   absolute comparisons.  The compare style can be given as an optional second
-   template parameter and defaults to relative_weak.
-
-   You can also use the class Dune::FloatCmpOps which has @link
-   Dune::FloatCmpOps::eq eq()@endlink, @link Dune::FloatCmpOps::ne
-   ne()@endlink, @link Dune::FloatCmpOps::gt gt()@endlink, @link
-   Dune::FloatCmpOps::lt lt()@endlink, @link Dune::FloatCmpOps::ge ge()@endlink
-   and @link Dune::FloatCmpOps::le le()@endlink as member functions.  In this
-   case the class encapsulates the epsilon and the comparison style (again the
-   defaults from the previous paragraph apply).  This may be more convenient if
-   you write your own class utilizing floating point comparisons, and you want
-   the user of you class to specify epsilon and compare style.
- */
-
-//! Dune namespace
-namespace Dune {
-  //! FloatCmp namespace
-  //! @ingroup FloatCmp
-  namespace FloatCmp {
-    // basic constants
-    //! How to compare
-    //! @ingroup FloatCmp
-    enum CmpStyle {
-      //! |a-b|/|a| <= epsilon || |a-b|/|b| <= epsilon
-      relativeWeak,
-      //! |a-b|/|a| <= epsilon && |a-b|/|b| <= epsilon
-      relativeStrong,
-      //! |a-b| <= epsilon
-      absolute,
-      //! the global default compare style (relative_weak)
-      defaultCmpStyle = relativeWeak
-    };
-    //! How to round or truncate
-    //! @ingroup FloatCmp
-    enum RoundingStyle {
-      //! always round toward 0
-      towardZero,
-      //! always round away from 0
-      towardInf,
-      //! round toward \f$-\infty\f$
-      downward,
-      //! round toward \f$+\infty\f$
-      upward,
-      //! the global default rounding style (toward_zero)
-      defaultRoundingStyle = towardZero
-    };
-
-    template<class T> struct EpsilonType;
-
-    //! mapping from a value type and a compare style to a default epsilon
-    /**
-     * @ingroup FloatCmp
-     * @tparam T     The value type to map from
-     * @tparam style The compare style to map from
-     */
-    template<class T, CmpStyle style = defaultCmpStyle>
-    struct DefaultEpsilon {
-      //! Returns the default epsilon for the given value type and compare style
-      static typename EpsilonType<T>::Type value();
-    };
-
-    // operations in functional style
-
-    //! @addtogroup FloatCmp
-    //! @{
-
-    //! test for equality using epsilon
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool eq(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-    //! test for inequality using epsilon
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     * @return        !eq(first, second, epsilon)
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool ne(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-    //! test if first greater than second
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     * @return        ne(first, second, epsilon) && first > second
-     *
-     * this is like first > second but the region that compares equal with an
-     * epsilon is excluded
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool gt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-    //! test if first lesser than second
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     * @return        ne(first, second, epsilon) && first < second
-     *
-     * this is like first < second, but the region that compares equal with an
-     * epsilon is excluded
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool lt(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-    //! test if first greater or equal second
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     * @return        eq(first, second, epsilon) || first > second
-     *
-     * this is like first > second, but the region that compares equal with an
-     * epsilon is also included
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool ge(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-    //! test if first lesser or equal second
-    /**
-     * @tparam T     Type of the values to compare
-     * @tparam style How to compare. This defaults to defaultCmpStyle.
-     * @param epsilon The epsilon to use in the comparison
-     * @return        eq(first, second) || first > second
-     *
-     * this is like first > second, but the region that compares equal with an
-     * epsilon is also included
-     */
-    template <class T, CmpStyle style /*= defaultCmpStyle*/>
-    bool le(const T &first,
-            const T &second,
-            typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, style>::value());
-
-    // rounding operations
-    //! round using epsilon
-    /**
-     * @tparam I      The integral type to round to
-     * @tparam T      Type of the value to round
-     * @tparam cstyle How to compare. This defaults to defaultCmpStyle.
-     * @tparam rstyle How to round. This defaults to defaultRoundingStyle.
-     * @param val     The value to round
-     * @param epsilon The epsilon to use in comparisons
-     * @return        The rounded value
-     *
-     * Round according to rstyle.  If val is already near the mean of two
-     * adjacent integers in terms of epsilon, the result will be the rounded
-     * mean.
-     */
-    template<class I, class T, CmpStyle cstyle /*= defaultCmpStyle*/, RoundingStyle rstyle /*= defaultRoundingStyle*/>
-    I round(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, cstyle>::value());
-    // truncation
-    //! truncate using epsilon
-    /**
-     * @tparam I      The integral type to truncate to
-     * @tparam T      Type of the value to truncate
-     * @tparam cstyle How to compare. This defaults to defaultCmpStyle.
-     * @tparam rstyle How to truncate. This defaults to defaultRoundingStyle.
-     * @param val     The value to truncate
-     * @param epsilon The epsilon to use in comparisons
-     * @return        The truncated value
-     *
-     * Truncate according to rstyle.  If val is already near an integer in
-     * terms of epsilon, the result will be that integer instead of the real
-     * truncated value.
-     */
-    template<class I, class T, CmpStyle cstyle /*= defaultCmpStyle*/, RoundingStyle rstyle /*= defaultRoundingStyle*/>
-    I trunc(const T &val, typename EpsilonType<T>::Type epsilon = DefaultEpsilon<T, cstyle>::value());
-
-    //! @}
-    // group FloatCmp
-  } //namespace FloatCmp
-
-
-  // oo interface
-  //! Class encapsulating a default epsilon
-  /**
-   * @ingroup FloatCmp
-   * @tparam T       Type of the values to compare
-   * @tparam cstyle_ How to compare
-   * @tparam rstyle_ How to round
-   */
-  template<class T, FloatCmp::CmpStyle cstyle_ = FloatCmp::defaultCmpStyle,
-      FloatCmp::RoundingStyle rstyle_ = FloatCmp::defaultRoundingStyle>
-  class FloatCmpOps {
-    typedef FloatCmp::CmpStyle CmpStyle;
-    typedef FloatCmp::RoundingStyle RoundingStyle;
-
-  public:
-    // record template parameters
-    //! How comparisons are done
-    static const CmpStyle cstyle = cstyle_;
-    //! How rounding is done
-    static const RoundingStyle rstyle = rstyle_;
-    //! Type of the values to compare
-    typedef T ValueType;
-    //! Type of the epsilon.
-    /**
-     * May be different from the value type, for example for complex<double>
-     */
-    typedef typename FloatCmp::EpsilonType<T>::Type EpsilonType;
-
-  private:
-    EpsilonType epsilon_;
-
-    typedef FloatCmp::DefaultEpsilon<EpsilonType, cstyle> DefaultEpsilon;
-
-  public:
-    //! construct an operations object
-    /**
-     * @param epsilon Use the specified epsilon for comparing
-     */
-    FloatCmpOps(EpsilonType epsilon = DefaultEpsilon::value());
-
-    //! return the current epsilon
-    EpsilonType epsilon() const;
-    //! set new epsilon
-    void epsilon(EpsilonType epsilon__);
-
-    //! test for equality using epsilon
-    bool eq(const ValueType &first, const ValueType &second) const;
-    //! test for inequality using epsilon
-    /**
-     * this is exactly !eq(first, second)
-     */
-    bool ne(const ValueType &first, const ValueType &second) const;
-    //! test if first greater than second
-    /**
-     * this is exactly ne(first, second) && first > second, i.e. greater but
-     * the region that compares equal with an epsilon is excluded
-     */
-    bool gt(const ValueType &first, const ValueType &second) const;
-    //! test if first lesser than second
-    /**
-     * this is exactly ne(first, second) && first < second, i.e. lesser but
-     * the region that compares equal with an epsilon is excluded
-     */
-    bool lt(const ValueType &first, const ValueType &second) const;
-    //! test if first greater or equal second
-    /**
-     * this is exactly eq(first, second) || first > second, i.e. greater but
-     * the region that compares equal with an epsilon is also included
-     */
-    bool ge(const ValueType &first, const ValueType &second) const;
-    //! test if first lesser or equal second
-    /**
-     * this is exactly eq(first, second) || first > second, i.e. lesser but
-     * the region that compares equal with an epsilon is also included
-     */
-    bool le(const ValueType &first, const ValueType &second) const;
-
-    //! round using epsilon
-    /**
-     * @tparam I   The integral type to round to
-     *
-     * @param  val The value to round
-     *
-     * Round according to rstyle.  If val is already near the mean of two
-     * adjacent integers in terms of epsilon, the result will be the rounded
-     * mean.
-     */
-    template<class I>
-    I round(const ValueType &val) const;
-
-    //! truncate using epsilon
-    /**
-     * @tparam I   The integral type to truncate to
-     *
-     * @param  val The value to truncate
-     *
-     * Truncate according to rstyle.  If val is already near an integer in
-     * terms of epsilon, the result will be that integer instead of the real
-     * truncated value.
-     */
-    template<class I>
-    I trunc(const ValueType &val) const;
-
-  };
-
-} //namespace Dune
-
-#include "float_cmp.cc"
-
-#endif //DUNE_COMMON_FLOAT_CMP_HH
diff --git a/common/fmatrix.hh b/common/fmatrix.hh
deleted file mode 100644
index 0241ca13c..000000000
--- a/common/fmatrix.hh
+++ /dev/null
@@ -1,1488 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_FMATRIX_HH
-#define DUNE_FMATRIX_HH
-
-#include <cmath>
-#include <cstddef>
-#include <complex>
-#include <iostream>
-#include "exceptions.hh"
-#include "fvector.hh"
-#include "precision.hh"
-#include "static_assert.hh"
-
-namespace Dune {
-
-  /**
-      @addtogroup DenseMatVec
-      @{
-   */
-
-  /*! \file
-
-     \brief  This file implements a matrix constructed from a given type
-     representing a field and compile-time given number of rows and columns.
-   */
-
-  template<class K, int n, int m> class FieldMatrix;
-
-  template<class K, int n, int m, typename T>
-  void istl_assign_to_fmatrix(FieldMatrix<K,n,m>& f, const T& t)
-  {
-    DUNE_THROW(NotImplemented, "You need to specialise this function for type T!");
-  }
-
-  namespace
-  {
-    template<bool b>
-    struct Assigner
-    {
-      template<class K, int n, int m, class T>
-      static void assign(FieldMatrix<K,n,m>& fm, const T& t)
-      {
-        istl_assign_to_fmatrix(fm, t);
-      }
-
-    };
-
-
-    template<>
-    struct Assigner<true>
-    {
-      template<class K, int n, int m, class T>
-      static void assign(FieldMatrix<K,n,m>& fm, const T& t)
-      {
-        fm = static_cast<const K>(t);
-      }
-    };
-  }
-
-  /** @brief Error thrown if operations of a FieldMatrix fail. */
-  class FMatrixError : public Exception {};
-
-  // conjugate komplex does nothing for non-complex types
-  template<class K>
-  inline K fm_ck (const K& k)
-  {
-    return k;
-  }
-
-  // conjugate komplex
-  template<class K>
-  inline std::complex<K> fm_ck (const std::complex<K>& c)
-  {
-    return std::complex<K>(c.real(),-c.imag());
-  }
-
-  /**
-      @brief A dense n x m matrix.
-
-     Matrices represent linear maps from a vector space V to a vector space W.
-       This class represents such a linear map by storing a two-dimensional
-       %array of numbers of a given field type K. The number of rows and
-       columns is given at compile time.
-   */
-#ifdef DUNE_EXPRESSIONTEMPLATES
-  template<class K, int n, int m>
-  class FieldMatrix : ExprTmpl::Matrix< FieldMatrix<K,n,m> >
-#else
-  template<class K, int n, int m>
-  class FieldMatrix
-#endif
-  {
-  public:
-    // standard constructor and everything is sufficient ...
-
-    //===== type definitions and constants
-
-    //! export the type representing the field
-    typedef K field_type;
-
-    //! export the type representing the components
-    typedef K block_type;
-
-    //! The type used for the index access and size operations.
-    typedef std::size_t size_type;
-
-    //! We are at the leaf of the block recursion
-    enum {
-      //! The number of block levels we contain. This is 1.
-      blocklevel = 1
-    };
-
-    //! Each row is implemented by a field vector
-    typedef FieldVector<K,m> row_type;
-
-    //! export size
-    enum {
-      //! The number of rows.
-      rows = n,
-      //! The number of columns.
-      cols = m
-    };
-
-    //===== constructors
-    /** \brief Default constructor
-     */
-    FieldMatrix () {}
-
-    /** \brief Constructor initializing the whole matrix with a scalar
-     */
-    FieldMatrix (const K& k)
-    {
-      for (size_type i=0; i<n; i++) p[i] = k;
-    }
-
-    template<typename T>
-    explicit FieldMatrix( const T& t)
-    {
-      Assigner<Conversion<T,K>::exists>::assign(*this, t);
-    }
-
-    //===== random access interface to rows of the matrix
-
-    //! random access to the rows
-    row_type& operator[] (size_type i)
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (i<0 || i>=n) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      return p[i];
-    }
-
-    //! same for read only access
-    const row_type& operator[] (size_type i) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (i<0 || i>=n) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      return p[i];
-    }
-
-
-    //===== iterator interface to rows of the matrix
-    //! Iterator class for sequential access
-    typedef FieldIterator<FieldMatrix<K,n,m>,row_type> Iterator;
-    //! typedef for stl compliant access
-    typedef Iterator iterator;
-    //! rename the iterators for easier access
-    typedef Iterator RowIterator;
-    //! rename the iterators for easier access
-    typedef typename row_type::Iterator ColIterator;
-
-    //! begin iterator
-    Iterator begin ()
-    {
-      return Iterator(*this,0);
-    }
-
-    //! end iterator
-    Iterator end ()
-    {
-      return Iterator(*this,n);
-    }
-
-    //! begin iterator
-    Iterator rbegin ()
-    {
-      return Iterator(*this,n-1);
-    }
-
-    //! end iterator
-    Iterator rend ()
-    {
-      return Iterator(*this,-1);
-    }
-
-    //! Iterator class for sequential access
-    typedef FieldIterator<const FieldMatrix<K,n,m>,const row_type> ConstIterator;
-    //! typedef for stl compliant access
-    typedef ConstIterator const_iterator;
-    //! rename the iterators for easier access
-    typedef ConstIterator ConstRowIterator;
-    //! rename the iterators for easier access
-    typedef typename row_type::ConstIterator ConstColIterator;
-
-    //! begin iterator
-    ConstIterator begin () const
-    {
-      return ConstIterator(*this,0);
-    }
-
-    //! end iterator
-    ConstIterator end () const
-    {
-      return ConstIterator(*this,n);
-    }
-
-    //! begin iterator
-    ConstIterator rbegin () const
-    {
-      return ConstIterator(*this,n-1);
-    }
-
-    //! end iterator
-    ConstIterator rend () const
-    {
-      return ConstIterator(*this,-1);
-    }
-
-    //===== assignment from scalar
-    FieldMatrix& operator= (const K& k)
-    {
-      for (size_type i=0; i<n; i++)
-        p[i] = k;
-      return *this;
-    }
-
-    template<typename T>
-    FieldMatrix& operator= ( const T& t)
-    {
-      Assigner<Conversion<T,K>::exists>::assign(*this, t);
-      return *this;
-    }
-    //===== vector space arithmetic
-
-    //! vector space addition
-    FieldMatrix& operator+= (const FieldMatrix& y)
-    {
-      for (size_type i=0; i<n; i++)
-        p[i] += y.p[i];
-      return *this;
-    }
-
-    //! vector space subtraction
-    FieldMatrix& operator-= (const FieldMatrix& y)
-    {
-      for (size_type i=0; i<n; i++)
-        p[i] -= y.p[i];
-      return *this;
-    }
-
-    //! vector space multiplication with scalar
-    FieldMatrix& operator*= (const K& k)
-    {
-      for (size_type i=0; i<n; i++)
-        p[i] *= k;
-      return *this;
-    }
-
-    //! vector space division by scalar
-    FieldMatrix& operator/= (const K& k)
-    {
-      for (size_type i=0; i<n; i++)
-        p[i] /= k;
-      return *this;
-    }
-
-    //! vector space axpy operation (*this += k y)
-    FieldMatrix &axpy ( const K &k, const FieldMatrix &y )
-    {
-      for( size_type i = 0; i < n; ++i )
-        p[ i ].axpy( k, y[ i ] );
-      return *this;
-    }
-
-    //===== linear maps
-
-    //! y = A x
-    template<class X, class Y>
-    void mv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      assert(&x != &y);
-      if (x.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      for (size_type i=0; i<n; ++i)
-      {
-        y[i] = 0;
-        for (size_type j=0; j<m; j++)
-          y[i] += (*this)[i][j] * x[j];
-      }
-    }
-
-    //! y = A^T x
-    template< class X, class Y >
-    void mtv ( const X &x, Y &y ) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      assert( &x != &y );
-      if( x.N() != N() )
-        DUNE_THROW( FMatrixError, "Index out of range." );
-      if( y.N() != M() )
-        DUNE_THROW( FMatrixError, "Index out of range." );
-#endif
-      for( size_type i = 0; i < m; ++i )
-      {
-        y[ i ] = 0;
-        for( size_type j = 0; j < n; ++j )
-          y[ i ] += (*this)[ j ][ i ] * x[ j ];
-      }
-    }
-
-    //! y += A x
-    template<class X, class Y>
-    void umv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[i] += (*this)[i][j] * x[j];
-    }
-
-    //! y += A^T x
-    template<class X, class Y>
-    void umtv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] += p[i][j]*x[i];
-    }
-
-    //! y += A^H x
-    template<class X, class Y>
-    void umhv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] += fm_ck(p[i][j])*x[i];
-    }
-
-    //! y -= A x
-    template<class X, class Y>
-    void mmv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[i] -= (*this)[i][j] * x[j];
-    }
-
-    //! y -= A^T x
-    template<class X, class Y>
-    void mmtv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] -= p[i][j]*x[i];
-    }
-
-    //! y -= A^H x
-    template<class X, class Y>
-    void mmhv (const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] -= fm_ck(p[i][j])*x[i];
-    }
-
-    //! y += alpha A x
-    template<class X, class Y>
-    void usmv (const K& alpha, const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[i] += alpha * (*this)[i][j] * x[j];
-    }
-
-    //! y += alpha A^T x
-    template<class X, class Y>
-    void usmtv (const K& alpha, const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] += alpha*p[i][j]*x[i];
-    }
-
-    //! y += alpha A^H x
-    template<class X, class Y>
-    void usmhv (const K& alpha, const X& x, Y& y) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (x.N()!=N()) DUNE_THROW(FMatrixError,"index out of range");
-      if (y.N()!=M()) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++)
-          y[j] += alpha*fm_ck(p[i][j])*x[i];
-    }
-
-    //===== norms
-
-    //! frobenius norm: sqrt(sum over squared values of entries)
-    double frobenius_norm () const
-    {
-      double sum=0;
-      for (size_type i=0; i<n; ++i) sum += p[i].two_norm2();
-      return sqrt(sum);
-    }
-
-    //! square of frobenius norm, need for block recursion
-    double frobenius_norm2 () const
-    {
-      double sum=0;
-      for (size_type i=0; i<n; ++i) sum += p[i].two_norm2();
-      return sum;
-    }
-
-    //! infinity norm (row sum norm, how to generalize for blocks?)
-    double infinity_norm () const
-    {
-      double max=0;
-      for (size_type i=0; i<n; ++i) max = std::max(max,p[i].one_norm());
-      return max;
-    }
-
-    //! simplified infinity norm (uses Manhattan norm for complex values)
-    double infinity_norm_real () const
-    {
-      double max=0;
-      for (size_type i=0; i<n; ++i) max = std::max(max,p[i].one_norm_real());
-      return max;
-    }
-
-    //===== solve
-
-    /** \brief Solve system A x = b
-     *
-     * \exception FMatrixError if the matrix is singular
-     */
-    template<class V>
-    void solve (V& x, const V& b) const;
-
-    /** \brief Compute inverse
-     *
-     * \exception FMatrixError if the matrix is singular
-     */
-    void invert();
-
-    //! calculates the determinant of this matrix
-    K determinant () const;
-
-    //! Multiplies M from the left to this matrix
-    FieldMatrix& leftmultiply (const FieldMatrix<K,n,n>& M)
-    {
-      FieldMatrix<K,n,m> C(*this);
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++) {
-          (*this)[i][j] = 0;
-          for (size_type k=0; k<n; k++)
-            (*this)[i][j] += M[i][k]*C[k][j];
-        }
-
-      return *this;
-    }
-
-    //! Multiplies M from the left to this matrix, this matrix is not modified
-    template<int l>
-    FieldMatrix<K,l,m> leftmultiplyany (const FieldMatrix<K,l,n>& M)
-    {
-      FieldMatrix<K,l,m> C;
-
-      for (size_type i=0; i<l; i++) {
-        for (size_type j=0; j<m; j++) {
-          C[i][j] = 0;
-          for (size_type k=0; k<n; k++)
-            C[i][j] += M[i][k]*(*this)[k][j];
-        }
-      }
-      return C;
-    }
-
-    //! Multiplies M from the right to this matrix
-    FieldMatrix& rightmultiply (const FieldMatrix<K,m,m>& M)
-    {
-      FieldMatrix<K,n,m> C(*this);
-
-      for (size_type i=0; i<n; i++)
-        for (size_type j=0; j<m; j++) {
-          (*this)[i][j] = 0;
-          for (size_type k=0; k<m; k++)
-            (*this)[i][j] += C[i][k]*M[k][j];
-        }
-      return *this;
-    }
-
-    //! Multiplies M from the right to this matrix, this matrix is not modified
-    template<int l>
-    FieldMatrix<K,n,l> rightmultiplyany (const FieldMatrix<K,m,l>& M)
-    {
-      FieldMatrix<K,n,l> C;
-
-      for (size_type i=0; i<n; i++) {
-        for (size_type j=0; j<l; j++) {
-          C[i][j] = 0;
-          for (size_type k=0; k<m; k++)
-            C[i][j] += (*this)[i][k]*M[k][j];
-        }
-      }
-      return C;
-    }
-
-
-    //===== sizes
-
-    //! number of blocks in row direction
-    size_type N () const
-    {
-      return n;
-    }
-
-    //! number of blocks in column direction
-    size_type M () const
-    {
-      return m;
-    }
-
-    //===== query
-
-    //! return true when (i,j) is in pattern
-    bool exists (size_type i, size_type j) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (i<0 || i>=n) DUNE_THROW(FMatrixError,"row index out of range");
-      if (j<0 || j>=m) DUNE_THROW(FMatrixError,"column index out of range");
-#endif
-      return true;
-    }
-
-    //===== conversion operator
-
-    /** \brief Sends the matrix to an output stream */
-    friend std::ostream& operator<< (std::ostream& s, const FieldMatrix<K,n,m>& a)
-    {
-      for (size_type i=0; i<n; i++)
-        s << a.p[i] << std::endl;
-      return s;
-    }
-
-  private:
-    // the data, very simply a built in array with row-wise ordering
-    row_type p[(n > 0) ? n : 1];
-
-    struct ElimPivot
-    {
-      ElimPivot(size_type pivot[n]);
-
-      void swap(int i, int j);
-
-      template<typename T>
-      void operator()(const T&, int k, int i)
-      {}
-
-      size_type* pivot_;
-    };
-
-    template<typename V>
-    struct Elim
-    {
-      Elim(V& rhs);
-
-      void swap(int i, int j);
-
-      void operator()(const typename V::field_type& factor, int k, int i);
-
-      V* rhs_;
-    };
-
-    struct ElimDet
-    {
-      ElimDet(K& sign) : sign_(sign)
-      { sign_ = 1; }
-
-      void swap(int i, int j)
-      { sign_ *= -1; }
-
-      void operator()(const K&, int k, int i)
-      {}
-
-      K& sign_;
-    };
-
-    template<class Func>
-    void luDecomposition(FieldMatrix<K,n,n>& A, Func func) const;
-  };
-
-  template<typename K, int n, int m>
-  FieldMatrix<K,n,m>::ElimPivot::ElimPivot(size_type pivot[n])
-    : pivot_(pivot)
-  {
-    for(int i=0; i < n; ++i) pivot[i]=i;
-  }
-
-  template<typename K, int n, int m>
-  void FieldMatrix<K,n,m>::ElimPivot::swap(int i, int j)
-  {
-    pivot_[i]=j;
-  }
-
-  template<typename K, int n, int m>
-  template<typename V>
-  FieldMatrix<K,n,m>::Elim<V>::Elim(V& rhs)
-    : rhs_(&rhs)
-  {}
-
-  template<typename K, int n, int m>
-  template<typename V>
-  void FieldMatrix<K,n,m>::Elim<V>::swap(int i, int j)
-  {
-    std::swap((*rhs_)[i], (*rhs_)[j]);
-  }
-
-  template<typename K, int n, int m>
-  template<typename V>
-  void FieldMatrix<K,n,m>::
-  Elim<V>::operator()(const typename V::field_type& factor, int k, int i)
-  {
-    (*rhs_)[k] -= factor*(*rhs_)[i];
-  }
-  template<typename K, int n, int m>
-  template<typename Func>
-  inline void FieldMatrix<K,n,m>::luDecomposition(FieldMatrix<K,n,n>& A, Func func) const
-  {
-    double norm=A.infinity_norm_real(); // for relative thresholds
-    double pivthres = std::max(FMatrixPrecision<>::absolute_limit(),norm*FMatrixPrecision<>::pivoting_limit());
-    double singthres = std::max(FMatrixPrecision<>::absolute_limit(),norm*FMatrixPrecision<>::singular_limit());
-
-    // LU decomposition of A in A
-    for (int i=0; i<n; i++)  // loop over all rows
-    {
-      double pivmax=fvmeta_absreal(A[i][i]);
-
-      // pivoting ?
-      if (pivmax<pivthres)
-      {
-        // compute maximum of column
-        int imax=i; double abs;
-        for (int k=i+1; k<n; k++)
-          if ((abs=fvmeta_absreal(A[k][i]))>pivmax)
-          {
-            pivmax = abs; imax = k;
-          }
-        // swap rows
-        if (imax!=i) {
-          for (int j=0; j<n; j++)
-            std::swap(A[i][j],A[imax][j]);
-          func.swap(i, imax); // swap the pivot or rhs
-        }
-      }
-
-      // singular ?
-      if (pivmax<singthres)
-        DUNE_THROW(FMatrixError,"matrix is singular");
-
-      // eliminate
-      for (int k=i+1; k<n; k++)
-      {
-        K factor = A[k][i]/A[i][i];
-        A[k][i] = factor;
-        for (int j=i+1; j<n; j++)
-          A[k][j] -= factor*A[i][j];
-        func(factor, k, i);
-      }
-    }
-  }
-
-  template <class K, int n, int m>
-  template <class V>
-  inline void FieldMatrix<K,n,m>::solve(V& x, const V& b) const
-  {
-    // never mind those ifs, because they get optimized away
-    if (n!=m)
-      DUNE_THROW(FMatrixError, "Can't solve for a " << n << "x" << m << " matrix!");
-
-    // no need to implement the case 1x1, because the whole matrix class is
-    // specialized for this
-
-    if (n==2) {
-
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      K detinv = p[0][0]*p[1][1]-p[0][1]*p[1][0];
-      if (fvmeta_absreal(detinv)<FMatrixPrecision<>::absolute_limit())
-        DUNE_THROW(FMatrixError,"matrix is singular");
-      detinv = 1/detinv;
-#else
-      K detinv = 1.0/(p[0][0]*p[1][1]-p[0][1]*p[1][0]);
-#endif
-
-      x[0] = detinv*(p[1][1]*b[0]-p[0][1]*b[1]);
-      x[1] = detinv*(p[0][0]*b[1]-p[1][0]*b[0]);
-
-    } else if (n==3) {
-
-      K d = determinant();
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (fvmeta_absreal(d)<FMatrixPrecision<>::absolute_limit())
-        DUNE_THROW(FMatrixError,"matrix is singular");
-#endif
-
-      x[0] = (b[0]*p[1][1]*p[2][2] - b[0]*p[2][1]*p[1][2]
-              - b[1] *p[0][1]*p[2][2] + b[1]*p[2][1]*p[0][2]
-              + b[2] *p[0][1]*p[1][2] - b[2]*p[1][1]*p[0][2]) / d;
-
-      x[1] = (p[0][0]*b[1]*p[2][2] - p[0][0]*b[2]*p[1][2]
-              - p[1][0] *b[0]*p[2][2] + p[1][0]*b[2]*p[0][2]
-              + p[2][0] *b[0]*p[1][2] - p[2][0]*b[1]*p[0][2]) / d;
-
-      x[2] = (p[0][0]*p[1][1]*b[2] - p[0][0]*p[2][1]*b[1]
-              - p[1][0] *p[0][1]*b[2] + p[1][0]*p[2][1]*b[0]
-              + p[2][0] *p[0][1]*b[1] - p[2][0]*p[1][1]*b[0]) / d;
-
-    } else {
-
-      V& rhs = x; // use x to store rhs
-      rhs = b; // copy data
-      Elim<V> elim(rhs);
-      FieldMatrix<K,n,n> A(*this);
-
-      luDecomposition(A, elim);
-
-      // backsolve
-      for(int i=n-1; i>=0; i--) {
-        for (int j=i+1; j<n; j++)
-          rhs[i] -= A[i][j]*x[j];
-        x[i] = rhs[i]/A[i][i];
-      }
-    }
-  }
-
-  template <class K, int n, int m>
-  inline void FieldMatrix<K,n,m>::invert()
-  {
-    // never mind those ifs, because they get optimized away
-    if (n!=m)
-      DUNE_THROW(FMatrixError, "Can't invert a " << n << "x" << m << " matrix!");
-
-    // no need to implement the case 1x1, because the whole matrix class is
-    // specialized for this
-
-    if (n==2) {
-
-      K detinv = p[0][0]*p[1][1]-p[0][1]*p[1][0];
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (fvmeta_absreal(detinv)<FMatrixPrecision<>::absolute_limit())
-        DUNE_THROW(FMatrixError,"matrix is singular");
-#endif
-      detinv = 1/detinv;
-
-      K temp=p[0][0];
-      p[0][0] =  p[1][1]*detinv;
-      p[0][1] = -p[0][1]*detinv;
-      p[1][0] = -p[1][0]*detinv;
-      p[1][1] =  temp*detinv;
-
-    } else {
-
-      FieldMatrix<K,n,n> A(*this);
-      size_type pivot[n];
-      luDecomposition(A, ElimPivot(pivot));
-      FieldMatrix<K,n,m>& L=A;
-      FieldMatrix<K,n,m>& U=A;
-
-      // initialize inverse
-      *this=K();
-
-      for(size_type i=0; i<n; ++i)
-        p[i][i]=1;
-
-      // L Y = I; multiple right hand sides
-      for (size_type i=0; i<n; i++) {
-        for (size_type j=0; j<i; j++)
-          for (size_type k=0; k<n; k++)
-            p[i][k] -= L[i][j]*p[j][k];
-      }
-
-      // U A^{-1} = Y
-      for (size_type i=n; i>0;) {
-        --i;
-        for (size_type k=0; k<n; k++) {
-          for (size_type j=i+1; j<n; j++)
-            p[i][k] -= U[i][j]*p[j][k];
-          p[i][k] /= U[i][i];
-        }
-      }
-
-      for(size_type i=n; i>0; ) {
-        --i;
-        if(i!=pivot[i])
-          for(size_type j=0; j<n; ++j)
-            std::swap(p[j][pivot[i]], p[j][i]);
-      }
-    }
-  }
-
-  // implementation of the determinant
-  template <class K, int n, int m>
-  inline K FieldMatrix<K,n,m>::determinant() const
-  {
-    // never mind those ifs, because they get optimized away
-    if (n!=m)
-      DUNE_THROW(FMatrixError, "There is no determinant for a " << n << "x" << m << " matrix!");
-
-    // no need to implement the case 1x1, because the whole matrix class is
-    // specialized for this
-
-    if (n==2)
-      return p[0][0]*p[1][1] - p[0][1]*p[1][0];
-
-    if (n==3) {
-      // code generated by maple
-      K t4  = p[0][0] * p[1][1];
-      K t6  = p[0][0] * p[1][2];
-      K t8  = p[0][1] * p[1][0];
-      K t10 = p[0][2] * p[1][0];
-      K t12 = p[0][1] * p[2][0];
-      K t14 = p[0][2] * p[2][0];
-
-      return (t4*p[2][2]-t6*p[2][1]-t8*p[2][2]+
-              t10*p[2][1]+t12*p[1][2]-t14*p[1][1]);
-
-    }
-
-    FieldMatrix<K,n,n> A(*this);
-    K det;
-    try
-    {
-      luDecomposition(A, ElimDet(det));
-    }
-    catch (FMatrixError&)
-    {
-      return 0;
-    }
-    for (int i = 0; i < n; ++i)
-      det *= A[i][i];
-    return det;
-  }
-
-
-  /** \brief Special type for 1x1 matrices
-   */
-  template<class K>
-  class FieldMatrix<K,1,1>
-  {
-  public:
-    // standard constructor and everything is sufficient ...
-
-    //===== type definitions and constants
-
-    //! export the type representing the field
-    typedef K field_type;
-
-    //! export the type representing the components
-    typedef K block_type;
-
-    //! The type used for index access and size operations
-    typedef std::size_t size_type;
-
-    //! We are at the leaf of the block recursion
-    enum {
-      //! The number of block levels we contain.
-      //! This is always one for this type.
-      blocklevel = 1
-    };
-
-    //! Each row is implemented by a field vector
-    typedef FieldVector<K,1> row_type;
-
-    //! export size
-    enum {
-      //! \brief The number of rows.
-      //! This is always one for this type.
-      rows = 1,
-      n = 1,
-      //! \brief The number of columns.
-      //! This is always one for this type.
-      cols = 1,
-      m = 1
-    };
-
-    //===== constructors
-    /** \brief Default constructor
-     */
-    FieldMatrix () {}
-
-    /** \brief Constructor initializing the whole matrix with a scalar
-     */
-    FieldMatrix (const K& k)
-    {
-      a = k;
-    }
-    template<typename T>
-    explicit FieldMatrix( const T& t)
-    {
-      Assigner<Conversion<T,K>::exists>::assign(*this, t);
-    }
-    //===== random access interface to rows of the matrix
-
-    //! random access to the rows
-    row_type& operator[] (size_type i)
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (i<0 || i>=n) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      return a;
-    }
-
-    //! same for read only access
-    const row_type& operator[] (size_type i) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (i<0 || i>=n) DUNE_THROW(FMatrixError,"index out of range");
-#endif
-      return a;
-    }
-
-    //===== iterator interface to rows of the matrix
-    //! Iterator class for sequential access
-    typedef FieldIterator<FieldMatrix<K,n,m>,row_type> Iterator;
-    //! typedef for stl compliant access
-    typedef Iterator iterator;
-    //! rename the iterators for easier access
-    typedef Iterator RowIterator;
-    //! rename the iterators for easier access
-    typedef typename row_type::Iterator ColIterator;
-
-    //! begin iterator
-    Iterator begin ()
-    {
-      return Iterator(*this,0);
-    }
-
-    //! end iterator
-    Iterator end ()
-    {
-      return Iterator(*this,n);
-    }
-
-    //! begin iterator
-    Iterator rbegin ()
-    {
-      return Iterator(*this,n-1);
-    }
-
-    //! end iterator
-    Iterator rend ()
-    {
-      return Iterator(*this,-1);
-    }
-
-    //! Iterator class for sequential access
-    typedef FieldIterator<const FieldMatrix<K,n,m>,const row_type> ConstIterator;
-    //! typedef for stl compliant access
-    typedef ConstIterator const_iterator;
-    //! rename the iterators for easier access
-    typedef ConstIterator ConstRowIterator;
-    //! rename the iterators for easier access
-    typedef typename row_type::ConstIterator ConstColIterator;
-
-    //! begin iterator
-    ConstIterator begin () const
-    {
-      return ConstIterator(*this,0);
-    }
-
-    //! end iterator
-    ConstIterator end () const
-    {
-      return ConstIterator(*this,n);
-    }
-
-    //! begin iterator
-    ConstIterator rbegin () const
-    {
-      return ConstIterator(*this,n-1);
-    }
-
-    //! end iterator
-    ConstIterator rend () const
-    {
-      return ConstIterator(*this,-1);
-    }
-
-    //===== assignment from scalar
-
-    FieldMatrix& operator= (const K& k)
-    {
-      a[0] = k;
-      return *this;
-    }
-
-    template<typename T>
-    FieldMatrix& operator= ( const T& t)
-    {
-      Assigner<Conversion<T,K>::exists>::assign(*this, t);
-      return *this;
-    }
-
-    //===== vector space arithmetic
-
-    //! vector space addition
-    FieldMatrix& operator+= (const K& y)
-    {
-      a[0] += y;
-      return *this;
-    }
-
-    //! vector space subtraction
-    FieldMatrix& operator-= (const K& y)
-    {
-      a[0] -= y;
-      return *this;
-    }
-
-    //! vector space multiplication with scalar
-    FieldMatrix& operator*= (const K& k)
-    {
-      a[0] *= k;
-      return *this;
-    }
-
-    //! vector space division by scalar
-    FieldMatrix& operator/= (const K& k)
-    {
-      a[0] /= k;
-      return *this;
-    }
-
-    //! vector space axpy operation (*this += a y)
-    FieldMatrix &axpy ( const K &k, const FieldMatrix &y )
-    {
-      a[ 0 ] += k * y.a[ 0 ];
-      return *this;
-    }
-
-    //===== linear maps
-
-    //! y = A x
-    void mv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p = a[0] * x.p;
-    }
-
-    //! y += A x
-    void umv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += a[0] * x.p;
-    }
-
-    //! y += A^T x
-    void umtv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += a[0] * x.p;
-    }
-
-    //! y += A^H x
-    void umhv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += fm_ck(a[0]) * x.p;
-    }
-
-    //! y -= A x
-    void mmv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p -= a[0] * x.p;
-    }
-
-    //! y -= A^T x
-    void mmtv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p -= a[0] * x.p;
-    }
-
-    //! y -= A^H x
-    void mmhv (const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p -= fm_ck(a[0]) * x.p;
-    }
-
-    //! y += alpha A x
-    void usmv (const K& alpha, const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += alpha * a[0] * x.p;
-    }
-
-    //! y += alpha A^T x
-    void usmtv (const K& alpha, const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += alpha * a[0] * x.p;
-    }
-
-    //! y += alpha A^H x
-    void usmhv (const K& alpha, const FieldVector<K,1>& x, FieldVector<K,1>& y) const
-    {
-      y.p += alpha * fm_ck(a[0]) * x.p;
-    }
-
-    //===== norms
-
-    //! frobenius norm: sqrt(sum over squared values of entries)
-    double frobenius_norm () const
-    {
-      return sqrt(fvmeta_abs2(a[0]));
-    }
-
-    //! square of frobenius norm, need for block recursion
-    double frobenius_norm2 () const
-    {
-      return fvmeta_abs2(a[0]);
-    }
-
-    //! infinity norm (row sum norm, how to generalize for blocks?)
-    double infinity_norm () const
-    {
-      return std::abs(a[0]);
-    }
-
-    //! simplified infinity norm (uses Manhattan norm for complex values)
-    double infinity_norm_real () const
-    {
-      return fvmeta_abs_real(a[0]);
-    }
-
-    //===== solve
-
-    //! Solve system A x = b
-    void solve (FieldVector<K,1>& x, const FieldVector<K,1>& b) const
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (fvmeta_absreal(a[0][0])<FMatrixPrecision<>::absolute_limit())
-        DUNE_THROW(FMatrixError,"matrix is singular");
-#endif
-      x.p = b.p/a[0];
-    }
-
-    //! compute inverse
-    void invert ()
-    {
-#ifdef DUNE_FMatrix_WITH_CHECKING
-      if (fvmeta_absreal(a[0][0])<FMatrixPrecision<>::absolute_limit())
-        DUNE_THROW(FMatrixError,"matrix is singular");
-#endif
-      a[0] = 1/a[0];
-    }
-
-    //! calculates the determinant of this matrix
-    K determinant () const
-    {
-      return a[ 0 ];
-    }
-
-    //! left multiplication
-    FieldMatrix& leftmultiply (const FieldMatrix& M)
-    {
-      a[0] *= M.a[0];
-      return *this;
-    }
-
-    //! left multiplication
-    FieldMatrix& rightmultiply (const FieldMatrix& M)
-    {
-      a[0] *= M.a[0];
-      return *this;
-    }
-
-
-    //===== sizes
-
-    //! number of blocks in row direction
-    size_type N () const
-    {
-      return 1;
-    }
-
-    //! number of blocks in column direction
-    size_type M () const
-    {
-      return 1;
-    }
-
-    //! row dimension of block r
-    size_type rowdim (size_type r) const
-    {
-      return 1;
-    }
-
-    //! col dimension of block c
-    size_type coldim (size_type c) const
-    {
-      return 1;
-    }
-
-    //! dimension of the destination vector space
-    size_type rowdim () const
-    {
-      return 1;
-    }
-
-    //! dimension of the source vector space
-    size_type coldim () const
-    {
-      return 1;
-    }
-
-    //===== query
-
-    //! return true when (i,j) is in pattern
-    bool exists (size_type i, size_type j) const
-    {
-      return i==0 && j==0;
-    }
-
-    //===== conversion operator
-
-    operator K () const {return a[0];}
-
-  private:
-    // the data, just a single row with a single scalar
-    row_type a;
-
-  };
-
-  namespace FMatrixHelp {
-
-
-    //! invert scalar without changing the original matrix
-    template <typename K>
-    static inline K invertMatrix (const FieldMatrix<K,1,1> &matrix, FieldMatrix<K,1,1> &inverse)
-    {
-      inverse[0][0] = 1.0/matrix[0][0];
-      return matrix[0][0];
-    }
-
-    //! invert scalar without changing the original matrix
-    template <typename K>
-    static inline K invertMatrix_retTransposed (const FieldMatrix<K,1,1> &matrix, FieldMatrix<K,1,1> &inverse)
-    {
-      return invertMatrix(matrix,inverse);
-    }
-
-
-    //! invert 2x2 Matrix without changing the original matrix
-    template <typename K>
-    static inline K invertMatrix (const FieldMatrix<K,2,2> &matrix, FieldMatrix<K,2,2> &inverse)
-    {
-      // code generated by maple
-      K det = (matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0]);
-      K det_1 = 1.0/det;
-      inverse[0][0] =   matrix[1][1] * det_1;
-      inverse[0][1] = - matrix[0][1] * det_1;
-      inverse[1][0] = - matrix[1][0] * det_1;
-      inverse[1][1] =   matrix[0][0] * det_1;
-      return det;
-    }
-
-    //! invert 2x2 Matrix without changing the original matrix
-    //! return transposed matrix
-    template <typename K>
-    static inline K invertMatrix_retTransposed (const FieldMatrix<K,2,2> &matrix, FieldMatrix<K,2,2> &inverse)
-    {
-      // code generated by maple
-      K det = (matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0]);
-      K det_1 = 1.0/det;
-      inverse[0][0] =   matrix[1][1] * det_1;
-      inverse[1][0] = - matrix[0][1] * det_1;
-      inverse[0][1] = - matrix[1][0] * det_1;
-      inverse[1][1] =   matrix[0][0] * det_1;
-      return det;
-    }
-
-    //! invert 3x3 Matrix without changing the original matrix
-    template <typename K>
-    static inline K invertMatrix (const FieldMatrix<K,3,3> &matrix, FieldMatrix<K,3,3> &inverse)
-    {
-      // code generated by maple
-      K t4  = matrix[0][0] * matrix[1][1];
-      K t6  = matrix[0][0] * matrix[1][2];
-      K t8  = matrix[0][1] * matrix[1][0];
-      K t10 = matrix[0][2] * matrix[1][0];
-      K t12 = matrix[0][1] * matrix[2][0];
-      K t14 = matrix[0][2] * matrix[2][0];
-
-      K det = (t4*matrix[2][2]-t6*matrix[2][1]-t8*matrix[2][2]+
-               t10*matrix[2][1]+t12*matrix[1][2]-t14*matrix[1][1]);
-      K t17 = 1.0/det;
-
-      inverse[0][0] =  (matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1])*t17;
-      inverse[0][1] = -(matrix[0][1] * matrix[2][2] - matrix[0][2] * matrix[2][1])*t17;
-      inverse[0][2] =  (matrix[0][1] * matrix[1][2] - matrix[0][2] * matrix[1][1])*t17;
-      inverse[1][0] = -(matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0])*t17;
-      inverse[1][1] =  (matrix[0][0] * matrix[2][2] - t14) * t17;
-      inverse[1][2] = -(t6-t10) * t17;
-      inverse[2][0] =  (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0]) * t17;
-      inverse[2][1] = -(matrix[0][0] * matrix[2][1] - t12) * t17;
-      inverse[2][2] =  (t4-t8) * t17;
-
-      return det;
-    }
-
-    //! invert 3x3 Matrix without changing the original matrix
-    template <typename K>
-    static inline K invertMatrix_retTransposed (const FieldMatrix<K,3,3> &matrix, FieldMatrix<K,3,3> &inverse)
-    {
-      // code generated by maple
-      K t4  = matrix[0][0] * matrix[1][1];
-      K t6  = matrix[0][0] * matrix[1][2];
-      K t8  = matrix[0][1] * matrix[1][0];
-      K t10 = matrix[0][2] * matrix[1][0];
-      K t12 = matrix[0][1] * matrix[2][0];
-      K t14 = matrix[0][2] * matrix[2][0];
-
-      K det = (t4*matrix[2][2]-t6*matrix[2][1]-t8*matrix[2][2]+
-               t10*matrix[2][1]+t12*matrix[1][2]-t14*matrix[1][1]);
-      K t17 = 1.0/det;
-
-      inverse[0][0] =  (matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1])*t17;
-      inverse[1][0] = -(matrix[0][1] * matrix[2][2] - matrix[0][2] * matrix[2][1])*t17;
-      inverse[2][0] =  (matrix[0][1] * matrix[1][2] - matrix[0][2] * matrix[1][1])*t17;
-      inverse[0][1] = -(matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0])*t17;
-      inverse[1][1] =  (matrix[0][0] * matrix[2][2] - t14) * t17;
-      inverse[2][1] = -(t6-t10) * t17;
-      inverse[0][2] =  (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0]) * t17;
-      inverse[1][2] = -(matrix[0][0] * matrix[2][1] - t12) * t17;
-      inverse[2][2] =  (t4-t8) * t17;
-
-      return det;
-    }
-
-    //! calculates ret = A * B
-    template< class K, int m, int n, int p >
-    static inline void multMatrix ( const FieldMatrix< K, m, n > &A,
-                                    const FieldMatrix< K, n, p > &B,
-                                    FieldMatrix< K, m, p > &ret )
-    {
-      typedef typename FieldMatrix< K, m, p > :: size_type size_type;
-
-      for( size_type i = 0; i < m; ++i )
-      {
-        for( size_type j = 0; j < p; ++j )
-        {
-          ret[ i ][ j ] = K( 0 );
-          for( size_type k = 0; k < n; ++k )
-            ret[ i ][ j ] += A[ i ][ k ] * B[ k ][ j ];
-        }
-      }
-    }
-
-    //! calculates ret= A_t*A
-    template <typename K, int rows,int cols>
-    static inline void multTransposedMatrix(const FieldMatrix<K,rows,cols> &matrix, FieldMatrix<K,cols,cols>& ret)
-    {
-      typedef typename FieldMatrix<K,rows,cols>::size_type size_type;
-
-      for(size_type i=0; i<cols; i++)
-        for(size_type j=0; j<cols; j++)
-        { ret[i][j]=0.0;
-          for(size_type k=0; k<rows; k++)
-            ret[i][j]+=matrix[k][i]*matrix[k][j];}
-    }
-
-    //! calculates ret = matrix * x
-    template <typename K, int rows,int cols>
-    static inline void multAssign(const FieldMatrix<K,rows,cols> &matrix, const FieldVector<K,cols> & x, FieldVector<K,rows> & ret)
-    {
-      typedef typename FieldMatrix<K,rows,cols>::size_type size_type;
-
-      for(size_type i=0; i<rows; ++i)
-      {
-        ret[i] = 0.0;
-        for(size_type j=0; j<cols; ++j)
-        {
-          ret[i] += matrix[i][j]*x[j];
-        }
-      }
-    }
-
-    //! calculates ret = matrix^T * x
-    template <typename K, int rows, int cols>
-    static inline void multAssignTransposed( const FieldMatrix<K,rows,cols> &matrix, const FieldVector<K,rows> & x, FieldVector<K,cols> & ret)
-    {
-      typedef typename FieldMatrix<K,rows,cols>::size_type size_type;
-
-      for(size_type i=0; i<cols; ++i)
-      {
-        ret[i] = 0.0;
-        for(size_type j=0; j<rows; ++j)
-          ret[i] += matrix[j][i]*x[j];
-      }
-    }
-
-    //! calculates ret = matrix * x
-    template <typename K, int rows,int cols>
-    static inline FieldVector<K,rows> mult(const FieldMatrix<K,rows,cols> &matrix, const FieldVector<K,cols> & x)
-    {
-      FieldVector<K,rows> ret;
-      multAssign(matrix,x,ret);
-      return ret;
-    }
-
-    //! calculates ret = matrix^T * x
-    template <typename K, int rows, int cols>
-    static inline FieldVector<K,cols> multTransposed(const FieldMatrix<K,rows,cols> &matrix, const FieldVector<K,rows> & x)
-    {
-      FieldVector<K,cols> ret;
-      multAssignTransposed( matrix, x, ret );
-      return ret;
-    }
-
-  } // end namespace FMatrixHelp
-
-#ifdef DUNE_EXPRESSIONTEMPLATES
-  template <class K, int N, int M>
-  struct BlockType< FieldMatrix<K,N,M> >
-  {
-    typedef K type;
-  };
-
-  template <class K, int N, int M>
-  struct FieldType< FieldMatrix<K,N,M> >
-  {
-    typedef K type;
-  };
-#endif // DUNE_EXPRESSIONTEMPLATES
-
-  /** @} end documentation */
-
-} // end namespace
-
-#include "fmatrixev.hh"
-#endif
diff --git a/common/fmatrixev.hh b/common/fmatrixev.hh
deleted file mode 100644
index ef65960f6..000000000
--- a/common/fmatrixev.hh
+++ /dev/null
@@ -1,184 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_FMATRIXEIGENVALUES_HH
-#define DUNE_FMATRIXEIGENVALUES_HH
-
-#include <iostream>
-#include <cmath>
-#include <cassert>
-
-#include <dune/common/exceptions.hh>
-#include <dune/common/fvector.hh>
-#include <dune/common/fmatrix.hh>
-
-#if HAVE_LAPACK
-// dsyev declaration (in liblapack)
-extern "C" {
-
-  /*
-   *
-   **  purpose
-   **  =======
-   **
-   **  xsyev computes all eigenvalues and, optionally, eigenvectors of a
-   **  BASE DATA TYPE symmetric matrix a.
-   **
-   **  arguments
-   **  =========
-   **
-   **  jobz    (input) char
-   **          = 'n':  compute eigenvalues only;
-   **          = 'v':  compute eigenvalues and eigenvectors.
-   **
-   **  uplo    (input) char
-   **          = 'u':  upper triangle of a is stored;
-   **          = 'l':  lower triangle of a is stored.
-   **
-   **  n       (input) long int
-   **          the order of the matrix a.  n >= 0.
-   **
-   **  a       (input/output) BASE DATA TYPE array, dimension (lda, n)
-   **          on entry, the symmetric matrix a.  if uplo = 'u', the
-   **          leading n-by-n upper triangular part of a contains the
-   **          upper triangular part of the matrix a.  if uplo = 'l',
-   **          the leading n-by-n lower triangular part of a contains
-   **          the lower triangular part of the matrix a.
-   **          on exit, if jobz = 'v', then if info = 0, a contains the
-   **          orthonormal eigenvectors of the matrix a.
-   **          if jobz = 'n', then on exit the lower triangle (if uplo='l')
-   **          or the upper triangle (if uplo='u') of a, including the
-   **          diagonal, is destroyed.
-   **
-   **  lda     (input) long int
-   **          the leading dimension of the array a.  lda >= max(1,n).
-   **
-   **  w       (output) BASE DATA TYPE array, dimension (n)
-   **          if info = 0, the eigenvalues in ascending order.
-   **
-   **
-   **
-   **  info    (output) long int
-   **          = 0:  successful exit
-   **          < 0:  if info = -i, the i-th argument had an illegal value
-   **          > 0:  if info = i, the algorithm failed to converge; i
-   **                off-diagonal elements of an intermediate tridiagonal
-   **                form did not converge to zero.
-   **
-   **/
-  extern void dsyev_(const char* jobz, const char* uplo, const long
-                     int* n, double* a, const long int* lda, double* w,
-                     double* work, const long int* lwork, long int* info);
-} // end extern C
-#endif
-
-namespace Dune {
-
-  /**
-     @addtogroup DenseMatVec
-     @{
-   */
-
-  namespace FMatrixHelp {
-
-    /** \brief calculates the eigenvalues of a field matrix
-        \param[in]  matrix matrix eigenvalues are calculated for
-        \param[out] eigenvalues FieldVector that contains eigenvalues in
-                    ascending order
-     */
-    template <typename K>
-    static void eigenValues(const FieldMatrix<K, 1, 1>& matrix,
-                            FieldVector<K, 1>& eigenvalues)
-    {
-      eigenvalues[0] = matrix[0][0];
-    }
-
-    /** \brief calculates the eigenvalues of a field matrix
-        \param[in]  matrix matrix eigenvalues are calculated for
-        \param[out] eigenvalues FieldVector that contains eigenvalues in
-                    ascending order
-     */
-    template <typename K>
-    static void eigenValues(const FieldMatrix<K, 2, 2>& matrix,
-                            FieldVector<K, 2>& eigenvalues)
-    {
-      const K detM = matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];
-      const K p = 0.5 * (matrix[0][0] + matrix [1][1]);
-      K q = p * p - detM;
-      if( q < 0 && q > -1e-14 ) q = 0;
-      if (p < 0 || q < 0)
-      {
-        std::cout << p << " p | q " << q << "\n";
-        std::cout << matrix << std::endl;
-        std::cout << "something went wrong in Eigenvalues for matrix!" << std::endl;
-        assert(false);
-        abort();
-      }
-
-      // get square root
-      q = std :: sqrt(q);
-
-      // store eigenvalues in ascending order
-      eigenvalues[0] = p - q;
-      eigenvalues[1] = p + q;
-    }
-
-    /** \brief calculates the eigenvalues of a field matrix
-        \param[in]  matrix matrix eigenvalues are calculated for
-        \param[out] eigenvalues FieldVector that contains eigenvalues in
-                    ascending order
-
-        \note LAPACK::dsyev is used to calculate the eigen values
-     */
-    template <int dim, typename K>
-    static void eigenValues(const FieldMatrix<K, dim, dim>& matrix,
-                            FieldVector<K, dim>& eigenvalues)
-    {
-#if HAVE_LAPACK
-      {
-        const long int N = dim ;
-        const char jobz = 'n'; // only calculate eigenvalues
-        const char uplo = 'u'; // use upper triangular matrix
-
-        // length of matrix vector
-        const long int w = N * N ;
-
-        // matrix to put into dsyev
-        double matrixVector[dim * dim];
-
-        // copy matrix
-        int row = 0;
-        for(int i=0; i<dim; ++i)
-        {
-          for(int j=0; j<dim; ++j, ++row)
-          {
-            matrixVector[ row ] = matrix[ i ][ j ];
-          }
-        }
-
-        // working memory
-        double workSpace[dim * dim];
-
-        // return value information
-        long int info = 0;
-
-        // call LAPACK dsyev
-        dsyev_(&jobz, &uplo, &N, &matrixVector[0], &N,
-               &eigenvalues[0], &workSpace[0], &w, &info);
-
-        if( info != 0 )
-        {
-          std::cerr << "For matrix " << matrix << " eigenvalue calculation failed! " << std::endl;
-          DUNE_THROW(InvalidStateException,"eigenValues: Eigenvalue calculation failed!");
-        }
-      }
-#else
-      DUNE_THROW(NotImplemented,"LAPACK is not available, therefore no eigenvalue calculation");
-#endif
-    }
-
-  } // end namespace FMatrixHelp
-
-  /** @} end documentation */
-
-} // end namespace Dune
-#endif
diff --git a/common/fvector.hh b/common/fvector.hh
deleted file mode 100644
index 30b152be8..000000000
--- a/common/fvector.hh
+++ /dev/null
@@ -1,1080 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_FVECTOR_HH
-#define DUNE_FVECTOR_HH
-
-#include <cmath>
-#include <cstddef>
-#include <cstdlib>
-#include <complex>
-
-#include "exceptions.hh"
-#include "genericiterator.hh"
-
-#ifdef DUNE_EXPRESSIONTEMPLATES
-#include "exprtmpl.hh"
-#endif
-
-namespace Dune {
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-
-  /** @defgroup DenseMatVec Dense Matrix and Vector Template Library
-      @ingroup Common
-          @{
-   */
-
-  /*! \file
-   * \brief This file implements a vector constructed from a given type
-     representing a field and a compile-time given size.
-   */
-
-  // forward declaration of template
-  template<class K, int SIZE> class FieldVector;
-
-#endif
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-
-  template<class K>
-  inline double fvmeta_absreal (const K& k)
-  {
-    return std::abs(k);
-  }
-
-  template<class K>
-  inline double fvmeta_absreal (const std::complex<K>& c)
-  {
-    return fvmeta_abs(c.real()) + fvmeta_abs(c.imag());
-  }
-
-  template<class K>
-  inline double fvmeta_abs2 (const K& k)
-  {
-    return k*k;
-  }
-
-  template<class K>
-  inline double fvmeta_abs2 (const std::complex<K>& c)
-  {
-    return c.real()*c.real() + c.imag()*c.imag();
-  }
-
-#endif
-
-  //! Iterator class for sequential access to FieldVector and FieldMatrix
-  template<class C, class T>
-  class FieldIterator :
-    public Dune::RandomAccessIteratorFacade<FieldIterator<C,T>,T, T&, int>
-  {
-    friend class FieldIterator<typename remove_const<C>::type, typename remove_const<T>::type >;
-    friend class FieldIterator<const typename remove_const<C>::type, const typename remove_const<T>::type >;
-
-  public:
-
-    /**
-     * @brief The type of the difference between two positions.
-     */
-    typedef std::ptrdiff_t DifferenceType;
-
-    // Constructors needed by the base iterators.
-    FieldIterator()
-      : container_(0), position_(0)
-    {}
-
-    FieldIterator(C& cont, DifferenceType pos)
-      : container_(&cont), position_(pos)
-    {}
-
-    FieldIterator(const FieldIterator<typename remove_const<C>::type, typename remove_const<T>::type >& other)
-      : container_(other.container_), position_(other.position_)
-    {}
-
-#if 0
-    FieldIterator(const FieldIterator<const typename remove_const<C>::type, const typename remove_const<T>::type >& other)
-      : container_(other.container_), position_(other.position_)
-    {}
-#endif
-#if 0
-    FieldIterator(const FieldIterator<C,T>& other)
-      : container_(other.container_), position_(other.position_)
-    {}
-#endif
-    // Methods needed by the forward iterator
-    bool equals(const FieldIterator<typename remove_const<C>::type,typename remove_const<T>::type>& other) const
-    {
-      return position_ == other.position_ && container_ == other.container_;
-    }
-
-
-    bool equals(const FieldIterator<const typename remove_const<C>::type,const typename remove_const<T>::type>& other) const
-    {
-      return position_ == other.position_ && container_ == other.container_;
-    }
-
-    T& dereference() const {
-      return container_->operator[](position_);
-    }
-
-    void increment(){
-      ++position_;
-    }
-
-    // Additional function needed by BidirectionalIterator
-    void decrement(){
-      --position_;
-    }
-
-    // Additional function needed by RandomAccessIterator
-    T& elementAt(DifferenceType i) const {
-      return container_->operator[](position_+i);
-    }
-
-    void advance(DifferenceType n){
-      position_=position_+n;
-    }
-
-    std::ptrdiff_t distanceTo(FieldIterator<const typename remove_const<C>::type,const typename remove_const<T>::type> other) const
-    {
-      assert(other.container_==container_);
-      return other.position_ - position_;
-    }
-
-    std::ptrdiff_t distanceTo(FieldIterator<typename remove_const<C>::type, typename remove_const<T>::type> other) const
-    {
-      assert(other.container_==container_);
-      return other.position_ - position_;
-    }
-
-    //! return index
-    DifferenceType index () const
-    {
-      return this->position_;
-    }
-
-  private:
-    C *container_;
-    DifferenceType position_;
-  };
-
-  //! Type Traits for Vector::Iterator vs (const Vector)::ConstIterator
-  template<class T>
-  struct IteratorType
-  {
-    typedef typename T::Iterator type;
-  };
-
-  template<class T>
-  struct IteratorType<const T>
-  {
-    typedef typename T::ConstIterator type;
-  };
-
-#ifdef DUNE_EXPRESSIONTEMPLATES
-  //! Iterator class for flat sequential access to a nested Vector
-  template<class V>
-  class FlatIterator :
-    public ForwardIteratorFacade<FlatIterator<V>,
-        typename Dune::FieldType<V>::type,
-        typename Dune::FieldType<V>::type&,
-        int>
-  {
-  public:
-    typedef typename IteratorType<V>::type BlockIterator;
-    typedef std::ptrdiff_t DifferenceType;
-    //    typedef typename BlockIterator::DifferenceType DifferenceType;
-    typedef typename BlockType<V>::type block_type;
-    typedef typename FieldType<V>::type field_type;
-    typedef FlatIterator<block_type> SubBlockIterator;
-    FlatIterator(const BlockIterator & i) :
-      it(i), bit(i->begin()), bend(i->end()) {};
-    void increment ()
-    {
-      ++bit;
-      if (bit == bend)
-      {
-        ++it;
-        bit = it->begin();
-        bend = it->end();
-      }
-    }
-    bool equals (const FlatIterator & fit) const
-    {
-      return fit.it == it && fit.bit == bit;
-    }
-    field_type& dereference() const
-    {
-      return *bit;
-    }
-    //! return index
-    DifferenceType index () const
-    {
-      return bit.index();
-    }
-  private:
-    BlockIterator it;
-    SubBlockIterator bit;
-    SubBlockIterator bend;
-  };
-
-  //! Specialization for FieldVector
-  //! acts as the end of the recursive template
-  template<class K, int N>
-  class FlatIterator< FieldVector<K,N> > :
-    public ForwardIteratorFacade<FlatIterator< FieldVector<K,N> >,
-        K, K&, int>
-  {
-  public:
-    typedef typename FieldVector<K,N>::Iterator BlockIterator;
-    typedef std::ptrdiff_t DifferenceType;
-    //    typedef typename BlockIterator::DifferenceType DifferenceType;
-    typedef typename FieldVector<K,N>::field_type field_type;
-    FlatIterator(const BlockIterator & i) : it(i) {};
-    void increment ()
-    {
-      ++it;
-    }
-    bool equals (const FlatIterator & fit) const
-    {
-      return fit.it == it;
-    }
-    field_type& dereference() const
-    {
-      return *it;
-    }
-    //! return index
-    DifferenceType index () const
-    {
-      return it.index();
-    }
-  private:
-    BlockIterator it;
-  };
-
-  //! Specialization for const FieldVector
-  //! acts as the end of the recursive template
-  template<class K, int N>
-  class FlatIterator< const FieldVector<K,N> > :
-    public ForwardIteratorFacade<FlatIterator< const FieldVector<K,N> >,
-        const K, const K&, int>
-  {
-  public:
-    typedef typename FieldVector<K,N>::ConstIterator BlockIterator;
-    typedef std::ptrdiff_t DifferenceType;
-    //    typedef typename BlockIterator::DifferenceType DifferenceType;
-    typedef typename FieldVector<K,N>::field_type field_type;
-    FlatIterator(const BlockIterator & i) : it(i) {};
-    void increment ()
-    {
-      ++it;
-    }
-    bool equals (const FlatIterator & fit) const
-    {
-      return fit.it == it;
-    }
-    const field_type& dereference() const
-    {
-      return *it;
-    }
-    //! return index
-    DifferenceType index () const
-    {
-      return it.index();
-    }
-  private:
-    BlockIterator it;
-  };
-#endif
-
-
-  /** \brief Construct a vector space out of a tensor product of fields.
-   *
-   *  K is the field type (use float, double, complex, etc) and SIZE
-   *  is the number of components.
-   *
-   *  It is generally assumed that K is a numerical type compatible with double
-   *  (E.g. norms are always computed in double precision).
-   */
-  template< class K, int SIZE >
-  class FieldVector
-#ifdef DUNE_EXPRESSIONTEMPLATES
-    : public Dune :: ExprTmpl :: Vector< FieldVector< K, SIZE > >
-#endif
-  {
-  public:
-    // remember size of vector
-    enum { dimension = SIZE };
-
-    // standard constructor and everything is sufficient ...
-
-    //===== type definitions and constants
-
-    //! export the type representing the field
-    typedef K field_type;
-
-    //! export the type representing the components
-    typedef K block_type;
-
-    //! The type used for the index access and size operation
-    typedef std::size_t size_type;
-
-    //! We are at the leaf of the block recursion
-    enum {
-      //! The number of block levels we contain
-      blocklevel = 1
-    };
-
-    //! export size
-    enum {
-      //! The size of this vector.
-      size = SIZE
-    };
-
-    //! Constructor making uninitialized vector
-    FieldVector() {}
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-    //! Constructor making vector with identical coordinates
-    explicit FieldVector (const K& t)
-    {
-      for (size_type i=0; i<SIZE; i++) p[i] = t;
-    }
-
-    //===== assignment from scalar
-    //! Assignment operator for scalar
-    FieldVector& operator= (const K& k)
-    {
-      //fvmeta_assignscalar<SIZE-1>::assignscalar(*this,k);
-      for (size_type i=0; i<SIZE; i++)
-        p[i] = k;
-      return *this;
-    }
-
-#else
-    //! Constructor making vector with identical coordinates
-    explicit FieldVector (const K& t)
-    {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Copy Constructor Scalar\n";
-#endif
-      assignFrom(t);
-    }
-    //! Assignment operator for scalar
-    FieldVector& operator= (const K& k)
-    {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Assignment Operator Scalar\n";
-#endif
-      return assignFrom(k);
-    }
-    template <class E>
-    FieldVector (Dune::ExprTmpl::Expression<E> op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Copy Constructor Expression\n";
-#endif
-      assignFrom(op);
-    }
-    template <class V>
-    FieldVector (const Dune::ExprTmpl::Vector<V> & op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Copy Operator Vector\n";
-#endif
-      assignFrom(op);
-    }
-    template <class E>
-    FieldVector&  operator = (Dune::ExprTmpl::Expression<E> op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Assignment Operator Expression\n";
-#endif
-      return assignFrom(op);
-    }
-    template <class V>
-    FieldVector& operator = (const Dune::ExprTmpl::Vector<V> & op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector Assignment Operator Vector\n";
-#endif
-      return assignFrom(op);
-    }
-#endif
-
-    /** \brief copy constructor */
-    FieldVector ( const FieldVector &other )
-    {
-      for( size_type i = 0; i < SIZE; ++i )
-        p[ i ] = other[ i ];
-    }
-
-    /** \brief Assigment from other vector */
-    FieldVector& operator= (const FieldVector& other) {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] = other[i];
-      return *this;
-    }
-
-
-    //===== access to components
-
-    //! random access
-    K& operator[] (size_type i)
-    {
-#ifdef DUNE_ISTL_WITH_CHECKING
-      if (i<0 || i>=SIZE) DUNE_THROW(MathError,"index out of range");
-#endif
-      return p[i];
-    }
-
-    //! same for read only access
-    const K& operator[] (size_type i) const
-    {
-#ifdef DUNE_ISTL_WITH_CHECKING
-      if (i<0 || i>=SIZE) DUNE_THROW(MathError,"index out of range");
-#endif
-      return p[i];
-    }
-
-    //! Iterator class for sequential access
-    typedef FieldIterator<FieldVector<K,SIZE>,K> Iterator;
-    //! typedef for stl compliant access
-    typedef Iterator iterator;
-
-    //! begin iterator
-    Iterator begin ()
-    {
-      return Iterator(*this,0);
-    }
-
-    //! end iterator
-    Iterator end ()
-    {
-      return Iterator(*this,SIZE);
-    }
-
-    //! begin iterator
-    Iterator rbegin ()
-    {
-      return Iterator(*this,SIZE-1);
-    }
-
-    //! end iterator
-    Iterator rend ()
-    {
-      return Iterator(*this,-1);
-    }
-
-    //! return iterator to given element or end()
-    Iterator find (size_type i)
-    {
-      if (i<SIZE)
-        return Iterator(*this,i);
-      else
-        return Iterator(*this,SIZE);
-    }
-
-    //! ConstIterator class for sequential access
-    typedef FieldIterator<const FieldVector<K,SIZE>,const K> ConstIterator;
-    //! typedef for stl compliant access
-    typedef ConstIterator const_iterator;
-
-    //! begin ConstIterator
-    ConstIterator begin () const
-    {
-      return ConstIterator(*this,0);
-    }
-
-    //! end ConstIterator
-    ConstIterator end () const
-    {
-      return ConstIterator(*this,SIZE);
-    }
-
-    //! begin ConstIterator
-    ConstIterator rbegin () const
-    {
-      return ConstIterator(*this,SIZE-1);
-    }
-
-    //! end ConstIterator
-    ConstIterator rend () const
-    {
-      return ConstIterator(*this,-1);
-    }
-
-    //! return iterator to given element or end()
-    ConstIterator find (size_type i) const
-    {
-      if (i<SIZE)
-        return ConstIterator(*this,i);
-      else
-        return ConstIterator(*this,SIZE);
-    }
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-    //===== vector space arithmetic
-
-    //! vector space addition
-    FieldVector& operator+= (const FieldVector& y)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] += y.p[i];
-      return *this;
-    }
-
-    //! vector space subtraction
-    FieldVector& operator-= (const FieldVector& y)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] -= y.p[i];
-      return *this;
-    }
-
-    //! Binary vector addition
-    FieldVector<K, size> operator+ (const FieldVector<K, size>& b) const
-    {
-      FieldVector<K, size> z = *this;
-      return (z+=b);
-    }
-
-    //! Binary vector subtraction
-    FieldVector<K, size> operator- (const FieldVector<K, size>& b) const
-    {
-      FieldVector<K, size> z = *this;
-      return (z-=b);
-    }
-
-    //! vector space add scalar to all comps
-    FieldVector& operator+= (const K& k)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] += k;
-      return *this;
-    }
-
-    //! vector space subtract scalar from all comps
-    FieldVector& operator-= (const K& k)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] -= k;
-      return *this;
-    }
-
-    //! vector space multiplication with scalar
-    FieldVector& operator*= (const K& k)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] *= k;
-      return *this;
-    }
-
-    //! vector space division by scalar
-    FieldVector& operator/= (const K& k)
-    {
-      for (size_type i=0; i<SIZE; i++)
-        p[i] /= k;
-      return *this;
-    }
-
-#endif
-
-    //! Binary vector comparison
-    bool operator== (const FieldVector& y) const
-    {
-      for (size_type i=0; i<SIZE; i++)
-        if (p[i]!=y.p[i])
-          return false;
-
-      return true;
-    }
-
-    //! Binary vector incomparison
-    bool operator!= (const FieldVector& y) const
-    {
-      return !operator==(y);
-    }
-
-
-    //! vector space axpy operation ( *this += a y )
-    FieldVector& axpy (const K& a, const FieldVector& y)
-    {
-#ifndef DUNE_EXPRESSIONTEMPLATES
-      for (size_type i=0; i<SIZE; i++)
-        p[i] += a*y.p[i];
-#else
-      *this += a*y;
-#endif
-      return *this;
-    }
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-    //===== Euclidean scalar product
-
-    //! scalar product (x^T y)
-    K operator* (const FieldVector& y) const
-    {
-      K result = 0;
-      for (int i=0; i<size; i++)
-        result += p[i]*y[i];
-      return result;
-    }
-
-    //===== norms
-
-    //! one norm (sum over absolute values of entries)
-    double one_norm() const {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result += std::abs(p[i]);
-      return result;
-    }
-
-
-    //! simplified one norm (uses Manhattan norm for complex values)
-    double one_norm_real () const
-    {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result += fvmeta_absreal(p[i]);
-      return result;
-    }
-
-    //! two norm sqrt(sum over squared values of entries)
-    double two_norm () const
-    {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result += fvmeta_abs2(p[i]);
-      return std::sqrt(result);
-    }
-
-    //! square of two norm (sum over squared values of entries), need for block recursion
-    double two_norm2 () const
-    {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result += fvmeta_abs2(p[i]);
-      return result;
-    }
-
-    //! infinity norm (maximum of absolute values of entries)
-    double infinity_norm () const
-    {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result = std::max(result, std::abs(p[i]));
-      return result;
-    }
-
-    //! simplified infinity norm (uses Manhattan norm for complex values)
-    double infinity_norm_real () const
-    {
-      double result = 0;
-      for (int i=0; i<size; i++)
-        result = std::max(result, fvmeta_absreal(p[i]));
-      return result;
-    }
-#endif
-
-    //===== sizes
-
-    //! number of blocks in the vector (are of size 1 here)
-    size_type N () const
-    {
-      return SIZE;
-    }
-
-    //! dimension of the vector space
-    size_type dim () const
-    {
-      return SIZE;
-    }
-
-  private:
-    // the data, very simply a built in array
-    K p[(SIZE > 0) ? SIZE : 1];
-  };
-
-  /** \brief Write a FieldVector to an output stream
-   *  \relates FieldVector
-   *
-   *  \param[in]  s  std :: ostream to write to
-   *  \param[in]  v  FieldVector to write
-   *
-   *  \returns the output stream (s)
-   */
-  template<typename K, int n>
-  std::ostream& operator<< (std::ostream& s, const FieldVector<K,n>& v)
-  {
-    for (typename FieldVector<K,n>::size_type i=0; i<n; i++)
-      s << ((i>0) ? " " : "") << v[i];
-    return s;
-  }
-
-  /** \brief Read a FieldVector from an input stream
-   *  \relates FieldVector
-   *
-   *  \note This operator is STL compilant, i.e., the content of v is only
-   *        changed if the read operation is successful.
-   *
-   *  \param[in]  in  std :: istream to read from
-   *  \param[out] v   FieldVector to be read
-   *
-   *  \returns the input stream (in)
-   */
-  template< class K, int SIZE >
-  inline std :: istream &operator>> ( std :: istream &in,
-                                      FieldVector< K, SIZE > &v )
-  {
-    FieldVector< K, SIZE > w;
-    for( typename FieldVector< K, SIZE > :: size_type i = 0; i < SIZE; ++i )
-      in >> w[ i ];
-    if( in )
-      v = w;
-    return in;
-  }
-
-
-  // forward declarations
-  template<class K, int n, int m> class FieldMatrix;
-
-
-
-  /** \brief Vectors containing only one component
-   */
-  template< class K >
-  class FieldVector< K, 1 >
-#ifdef DUNE_EXPRESSIONTEMPLATES
-    : public Dune :: ExprTmpl :: Vector< FieldVector< K, 1 > >
-#endif
-  {
-    enum { n = 1 };
-  public:
-    friend class FieldMatrix<K,1,1>;
-
-    //===== type definitions and constants
-
-    //! export the type representing the field
-    typedef K field_type;
-
-    //! export the type representing the components
-    typedef K block_type;
-
-    //! The type for the index access and size operations.
-    typedef std::size_t size_type;
-
-    //! We are at the leaf of the block recursion
-    enum {blocklevel = 1};
-
-    //! export size
-    enum {size = 1};
-
-    //! export size
-    enum {dimension = 1};
-
-    //===== construction
-
-    /** \brief Default constructor */
-    FieldVector ()
-    {       }
-
-    /** \brief Constructor with a given scalar */
-    FieldVector (const K& k)
-    {
-      p = k;
-    }
-
-    /** \brief Assignment from the base type */
-    FieldVector& operator= (const K& k)
-    {
-      p = k;
-      return *this;
-    }
-
-#ifdef DUNE_EXPRESSIONTEMPLATES
-    template <class E>
-    FieldVector (Dune::ExprTmpl::Expression<E> op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector<1> Copy Constructor Expression\n";
-#endif
-      assignFrom(op);
-    }
-    template <class V>
-    FieldVector (const Dune::ExprTmpl::Vector<V> & op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector<1> Copy Operator Vector\n";
-#endif
-      assignFrom(op);
-    }
-    template <class E>
-    FieldVector&  operator = (Dune::ExprTmpl::Expression<E> op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector<1> Assignment Operator Expression\n";
-#endif
-      return assignFrom(op);
-    }
-    template <class V>
-    FieldVector& operator = (const Dune::ExprTmpl::Vector<V> & op) {
-#ifdef DUNE_VVERBOSE
-      Dune::dvverb << INDENT << "FieldVector<1> Assignment Operator Vector\n";
-#endif
-      return assignFrom(op);
-    }
-#endif
-
-    //===== access to components
-
-    //! random access
-    K& operator[] (size_type i)
-    {
-#ifdef DUNE_ISTL_WITH_CHECKING
-      if (i != 0) DUNE_THROW(MathError,"index out of range");
-#endif
-      return p;
-    }
-
-    //! same for read only access
-    const K& operator[] (size_type i) const
-    {
-#ifdef DUNE_ISTL_WITH_CHECKING
-      if (i != 0) DUNE_THROW(MathError,"index out of range");
-#endif
-      return p;
-    }
-
-    //! Iterator class for sequential access
-    typedef FieldIterator<FieldVector<K,n>,K> Iterator;
-    //! typedef for stl compliant access
-    typedef Iterator iterator;
-
-    //! begin iterator
-    Iterator begin ()
-    {
-      return Iterator(*this,0);
-    }
-
-    //! end iterator
-    Iterator end ()
-    {
-      return Iterator(*this,n);
-    }
-
-    //! begin iterator
-    Iterator rbegin ()
-    {
-      return Iterator(*this,n-1);
-    }
-
-    //! end iterator
-    Iterator rend ()
-    {
-      return Iterator(*this,-1);
-    }
-
-    //! return iterator to given element or end()
-    Iterator find (size_type i)
-    {
-      if (i<n)
-        return Iterator(*this,i);
-      else
-        return Iterator(*this,n);
-    }
-
-    //! ConstIterator class for sequential access
-    typedef FieldIterator<const FieldVector<K,n>,const K> ConstIterator;
-    //! typedef for stl compliant access
-    typedef ConstIterator const_iterator;
-
-    //! begin ConstIterator
-    ConstIterator begin () const
-    {
-      return ConstIterator(*this,0);
-    }
-
-    //! end ConstIterator
-    ConstIterator end () const
-    {
-      return ConstIterator(*this,n);
-    }
-
-    //! begin ConstIterator
-    ConstIterator rbegin () const
-    {
-      return ConstIterator(*this,n-1);
-    }
-
-    //! end ConstIterator
-    ConstIterator rend () const
-    {
-      return ConstIterator(*this,-1);
-    }
-
-    //! return iterator to given element or end()
-    ConstIterator find (size_type i) const
-    {
-      if (i<n)
-        return ConstIterator(*this,i);
-      else
-        return ConstIterator(*this,n);
-    }
-    //===== vector space arithmetic
-
-    //! vector space add scalar to each comp
-    FieldVector& operator+= (const K& k)
-    {
-      p += k;
-      return *this;
-    }
-
-    //! vector space subtract scalar from each comp
-    FieldVector& operator-= (const K& k)
-    {
-      p -= k;
-      return *this;
-    }
-
-    //! vector space multiplication with scalar
-    FieldVector& operator*= (const K& k)
-    {
-      p *= k;
-      return *this;
-    }
-
-    //! vector space division by scalar
-    FieldVector& operator/= (const K& k)
-    {
-      p /= k;
-      return *this;
-    }
-
-    //! vector space axpy operation ( *this += a y )
-    FieldVector& axpy (const K& a, const FieldVector& y)
-    {
-      p += a*y.p;
-      return *this;
-    }
-
-    //! scalar product (x^T y)
-    inline K operator* ( const K & k ) const
-    {
-      return p * k;
-    }
-
-    //===== norms
-
-    //! one norm (sum over absolute values of entries)
-    double one_norm () const
-    {
-      return std::abs(p);
-    }
-
-    //! simplified one norm (uses Manhattan norm for complex values)
-    double one_norm_real () const
-    {
-      return fvmeta_abs_real(p);
-    }
-
-    //! two norm sqrt(sum over squared values of entries)
-    double two_norm () const
-    {
-      return sqrt(fvmeta_abs2(p));
-    }
-
-    //! square of two norm (sum over squared values of entries), need for block recursion
-    double two_norm2 () const
-    {
-      return fvmeta_abs2(p);
-    }
-
-    //! infinity norm (maximum of absolute values of entries)
-    double infinity_norm () const
-    {
-      return std::abs(p);
-    }
-
-    //! simplified infinity norm (uses Manhattan norm for complex values)
-    double infinity_norm_real () const
-    {
-      return fvmeta_abs_real(p);
-    }
-
-    //===== sizes
-
-    //! number of blocks in the vector (are of size 1 here)
-    size_type N () const
-    {
-      return 1;
-    }
-
-    //! dimension of the vector space (==1)
-    size_type dim () const
-    {
-      return 1;
-    }
-
-    //===== conversion operator
-
-    /** \brief Conversion operator */
-    operator K () {return p;}
-
-    /** \brief Const conversion operator */
-    operator K () const {return p;}
-
-  private:
-    // the data
-    K p;
-  };
-
-#ifndef DUNE_EXPRESSIONTEMPLATES
-  //! Binary vector addition
-  template<class K>
-  inline FieldVector<K,1> operator+ (const FieldVector<K,1>& a, const FieldVector<K,1>& b)
-  {
-    FieldVector<K,1> z = a;
-    return (z+=b);
-  }
-
-  //! Binary vector subtraction
-  template<class K>
-  inline FieldVector<K,1> operator- (const FieldVector<K,1>& a, const FieldVector<K,1>& b)
-  {
-    FieldVector<K,1> z = a;
-    return (z-=b);
-  }
-
-  //! Binary addition, when using FieldVector<K,1> like K
-  template<class K>
-  inline FieldVector<K,1> operator+ (const FieldVector<K,1>& a, const K b)
-  {
-    FieldVector<K,1> z = a;
-    return (z[0]+=b);
-  }
-
-  //! Binary subtraction, when using FieldVector<K,1> like K
-  template<class K>
-  inline FieldVector<K,1> operator- (const FieldVector<K,1>& a, const K b)
-  {
-    FieldVector<K,1> z = a;
-    return (z[0]-=b);
-  }
-
-  //! Binary addition, when using FieldVector<K,1> like K
-  template<class K>
-  inline FieldVector<K,1> operator+ (const K a, const FieldVector<K,1>& b)
-  {
-    FieldVector<K,1> z = a;
-    return (z[0]+=b);
-  }
-
-  //! Binary subtraction, when using FieldVector<K,1> like K
-  template<class K>
-  inline FieldVector<K,1> operator- (const K a, const FieldVector<K,1>& b)
-  {
-    FieldVector<K,1> z = a;
-    return (z[0]-=b);
-  }
-#endif
-
-  /** @} end documentation */
-
-} // end namespace
-
-#endif
diff --git a/common/gcd.hh b/common/gcd.hh
deleted file mode 100644
index a5e520b9e..000000000
--- a/common/gcd.hh
+++ /dev/null
@@ -1,77 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_GCD_HH
-#define DUNE_GCD_HH
-
-#include "static_assert.hh"
-namespace Dune
-{
-  /**
-   * @addtogroup Common
-   * @{
-   */
-  /**
-   * @file
-   * This file provides template constructs for calculation the
-   * greatest common divisor.
-   */
-
-  /**
-   * @brief Helper for calculating the gcd.
-   */
-  template<long a, long b, bool bo>
-  struct GcdHelper
-  {};
-
-
-  template<long a, long b>
-  struct GcdHelper<a,b,true>
-  {
-    /**
-     * @brief Check that a>b.
-     */
-    static void conceptCheck()
-    {
-      dune_static_assert(b<a, "b<a must hold!");
-      dune_static_assert(0<b, "b must be positive");
-    }
-
-
-    /**
-     * @brief The greatest common divisor of the numbers a and b.
-     */
-    const static long gcd = GcdHelper<b,a%b,true>::gcd;
-  };
-
-  template<long a, long b>
-  struct GcdHelper<a,b,false>
-  {
-    /**
-     * @brief The greatest common divisor of the numbers a and b.
-     */
-    const static long gcd = GcdHelper<b,a,true>::gcd;
-  };
-  template<long a>
-  struct GcdHelper<a,0,true>
-  {
-    const static long gcd=a;
-  };
-
-
-  /**
-   * @brief Calculator of the greatest common divisor.
-   */
-  template<long a, long b>
-  struct Gcd
-  {
-    /**
-     * @brief The greatest common divisior of a and b. */
-    const static long value = GcdHelper<a,b,(a>b)>::gcd;
-  };
-
-  /**
-   * @}
-   */
-}
-
-#endif
diff --git a/common/genericiterator.hh b/common/genericiterator.hh
deleted file mode 100644
index 981b8bd3e..000000000
--- a/common/genericiterator.hh
+++ /dev/null
@@ -1,279 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_GENERICITERATOR_HH
-#define DUNE_GENERICITERATOR_HH
-
-#include <dune/common/iteratorfacades.hh>
-#include <cassert>
-
-namespace Dune {
-
-  /*! \defgroup GenericIterator GenericIterator
-     \ingroup IteratorFacades
-
-     \brief Generic Iterator class for writing stl conformant iterators
-     for any Container class with operator[]
-
-     Using this template class you can create an iterator and a const_iterator
-     for any Container class.
-
-     Imagine you have SimpleContainer and would like to have an iterator.
-     All you have to do is provide operator[], begin() and end()
-     (for const and for non-const).
-
-     \code
-     template<class T>
-     class SimpleContainer{
-     public:
-      typedef GenericIterator<SimpleContainer<T>,T> iterator;
-
-      typedef GenericIterator<const SimpleContainer<T>,const T> const_iterator;
-
-      SimpleContainer(){
-        for(int i=0; i < 100; i++)
-          values_[i]=i;
-      }
-
-      iterator begin(){
-        return iterator(*this, 0);
-      }
-
-      const_iterator begin() const{
-        return const_iterator(*this, 0);
-      }
-
-      iterator end(){
-        return iterator(*this, 100);
-      }
-
-      const_iterator end() const{
-        return const_iterator(*this, 100);
-      }
-
-      T& operator[](int i){
-        return values_[i];
-      }
-
-      const T& operator[](int i) const{
-        return values_[i];
-      }
-     private:
-      T values_[100];
-     };
-     \endcode
-
-     See dune/common/test/iteratorfacestest.hh for details or
-     Dune::QuadratureDefault in dune/quadrature/quadrature.hh
-     for a real example.
-   */
-
-  /**
-   * @file
-   * @brief This file implements a generic iterator classes for writing stl conformant iterators.
-   *
-   * With using this generic iterator writing iterators for containers
-   * with operator[] is only a matter of seconds
-   */
-
-  /**
-     \brief get the 'const' version of a reference to amutable object
-
-     given a reference R=T& const_reference<R>::type gives you the typedef for const T&
-   */
-  template<class R>
-  struct const_reference
-  {
-    typedef const R type;
-  };
-
-  template<class R>
-  struct const_reference<const R>
-  {
-    typedef const R type;
-  };
-
-  template<class R>
-  struct const_reference<R&>
-  {
-    typedef const R& type;
-  };
-
-  template<class R>
-  struct const_reference<const R&>
-  {
-    typedef const R& type;
-  };
-
-  /**
-     \brief get the 'mutable' version of a reference to a const object
-
-     given a const reference R=const T& mutable_reference<R>::type gives you the typedef for T&
-   */
-  template<class R>
-  struct mutable_reference
-  {
-    typedef R type;
-  };
-
-  template<class R>
-  struct mutable_reference<const R>
-  {
-    typedef R type;
-  };
-
-  template<class R>
-  struct mutable_reference<R&>
-  {
-    typedef R& type;
-  };
-
-  template<class R>
-  struct mutable_reference<const R&>
-  {
-    typedef R& type;
-  };
-
-  /** @addtogroup GenericIterator
-   *
-   * @{
-   */
-
-  /**
-   * @brief Generic class for stl conformant iterators for container classes with operator[].
-   *
-   * If template parameter C has a const qualifier we are a const iterator, otherwise we
-   * are a mutable iterator.
-   */
-  template<class C, class T, class R=T&, class D = std::ptrdiff_t,
-      template<class,class,class,class> class IteratorFacade=RandomAccessIteratorFacade>
-  class GenericIterator :
-    public IteratorFacade<GenericIterator<C,T,R,D,IteratorFacade>,T,R,D>
-  {
-    friend class GenericIterator<typename remove_const<C>::type, typename remove_const<T>::type, typename mutable_reference<R>::type, D, IteratorFacade>;
-    friend class GenericIterator<const typename remove_const<C>::type, const typename remove_const<T>::type, typename const_reference<R>::type, D, IteratorFacade>;
-
-    typedef GenericIterator<typename remove_const<C>::type, typename remove_const<T>::type, typename mutable_reference<R>::type, D, IteratorFacade> MutableIterator;
-    typedef GenericIterator<const typename remove_const<C>::type, const typename remove_const<T>::type, typename const_reference<R>::type, D, IteratorFacade> ConstIterator;
-
-  public:
-
-    /**
-     * @brief The type of container we are an iterator for.
-     *
-     * The container type must provide a operator[] method.
-     *
-     * If C has a const qualifier we are a const iterator, otherwise we
-     * are a mutable iterator.
-     */
-    typedef C Container;
-
-    /**
-     * @brief The value type of the iterator.
-     *
-     * This is the return type of the iterator returned when derefencing.
-     */
-    typedef T Value;
-
-    /**
-     * @brief The type of the difference between two positions.
-     */
-    typedef D DifferenceType;
-
-    /**
-     * @brief The type of the reference to the values accessed.
-     */
-    typedef R Reference;
-
-    // Constructors needed by the base iterators.
-    GenericIterator() : container_(0), position_(0)
-    {}
-
-    /**
-     * @brief Constructor.
-     * @param cont Reference to the container we are an iterator for.
-     * @param pos The postion the Iterator will be positioned to.
-     * (e. g. 0 for an iterator return by Container::begin() or
-     * the sizeof the container for an iterator returned by Container::end()
-     */
-    GenericIterator(Container& cont, DifferenceType pos)
-      : container_(&cont), position_(pos)
-    {}
-
-    /**
-     * @brief Copy constructor.
-     *
-     * This is somehow hard to understand, therefore play with the cases:
-     * 1. if we are mutable this is the only valid copy constructor, as the arguments is a mutable iterator
-     * 2. if we are a const iterator the argument is a mutable iterator => This is the needed conversion to initialize a const iterator form a mutable one.
-     */
-    GenericIterator(const MutableIterator& other) : container_(other.container_), position_(other.position_)
-    {}
-
-    /**
-     * @brief Copy constructor
-     *
-     * @warning Calling this method results in a compiler error, if this is a mutable iterator.
-     *
-     * This is somehow hard to understand, therefore play with the cases:
-     * 1. if we are mutable the arguments is a const iterator and therefore calling this method is mistake in the users code and results in a (probably not understandable compiler error
-     * 2. If we are a const iterator this is the default copy constructor as the argument is a const iterator too.
-     */
-    GenericIterator(const ConstIterator& other) : container_(other.container_), position_(other.position_)
-    {}
-
-    // Methods needed by the forward iterator
-    bool equals(const MutableIterator & other) const
-    {
-      return position_ == other.position_ && container_ == other.container_;
-    }
-
-    bool equals(const ConstIterator & other) const
-    {
-      return position_ == other.position_ && container_ == other.container_;
-    }
-
-    Reference dereference() const {
-      return container_->operator[](position_);
-    }
-
-    void increment(){
-      ++position_;
-    }
-
-    // Additional function needed by BidirectionalIterator
-    void decrement(){
-      --position_;
-    }
-
-    // Additional function needed by RandomAccessIterator
-    Reference elementAt(DifferenceType i) const {
-      return container_->operator[](position_+i);
-    }
-
-    void advance(DifferenceType n){
-      position_=position_+n;
-    }
-
-    DifferenceType distanceTo(const MutableIterator& other) const
-    {
-      assert(other.container_==container_);
-      return other.position_ - position_;
-    }
-
-    DifferenceType distanceTo(const ConstIterator& other) const
-    {
-      assert(other.container_==container_);
-      return other.position_ - position_;
-    }
-
-  private:
-    Container *container_;
-    DifferenceType position_;
-  };
-
-  /** @} */
-
-} // end namespace Dune
-
-#endif
diff --git a/common/geometrytype.hh b/common/geometrytype.hh
deleted file mode 100644
index 93c2b9493..000000000
--- a/common/geometrytype.hh
+++ /dev/null
@@ -1,194 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_GEOMETRY_TYPE_HH
-#define DUNE_GEOMETRY_TYPE_HH
-
-/** \file
-    \brief A unique label for each type of element that can occur in a grid
- */
-
-#include <dune/common/exceptions.hh>
-
-namespace Dune {
-
-  /** \brief Unique label for each type of entities that can occur in DUNE grids
-
-     This class has to be extended if a grid implementation with new entity types
-     is added to DUNE.
-
-      \ingroup COGeometryType
-   */
-  class GeometryType
-  {
-  public:
-    /** \brief Each entity can be tagged by one of these basic types
-        plus its space dimension */
-    enum BasicType {
-      simplex,               //!< Simplicial element in any nonnegative dimension
-      cube,                  //!< Cube element in any nonnegative dimension
-      pyramid,               //!< Four sided pyramid in three dimensions
-      prism                  //!< Prism element in three dimensions
-    };
-
-  private:
-
-    /** \brief Basic type of the element */
-    BasicType basicType_;
-
-    /** \brief Dimension of the element */
-    unsigned int dim_;
-
-  public:
-    /** \brief Default constructor, not initializing anything */
-    GeometryType ()
-    {}
-
-    /** \brief Constructor */
-    GeometryType(BasicType basicType, unsigned int dim)
-      : basicType_(basicType), dim_(dim)
-    {}
-
-    /** \brief Constructor for vertices and segments
-        \todo Add check for dim={0,1} when compiled with a suitable flag
-     */
-    explicit GeometryType(unsigned int dim)
-      : basicType_(cube), dim_(dim)
-    {}
-
-    /** @name Setup Methods */
-    /*@{*/
-
-    /** \brief Make a vertex */
-    void makeVertex() {dim_ = 0;}
-
-    /** \brief Make a line segment */
-    void makeLine() {dim_ = 1;}
-
-    /** \brief Make a triangle */
-    void makeTriangle() {basicType_ = simplex; dim_ = 2;}
-
-    /** \brief Make a quadrilateral */
-    void makeQuadrilateral() {basicType_ = cube; dim_ = 2;}
-
-    /** \brief Make a tetrahedron */
-    void makeTetrahedron() {basicType_ = simplex; dim_ = 3;}
-
-    /** \brief Make a pyramid */
-    void makePyramid() {basicType_ = pyramid;}
-
-    /** \brief Make a prism */
-    void makePrism() {basicType_ = prism;}
-
-    /** \brief Make a hexahedron */
-    void makeHexahedron() {basicType_ = cube; dim_ = 3;}
-
-    /** \brief Make a simplex of given dimension */
-    void makeSimplex(unsigned int dim) {basicType_ = simplex; dim_ = dim;}
-
-    /** \brief Make a hypercube of given dimension */
-    void makeCube(unsigned int dim) {basicType_ = cube; dim_ = dim;}
-
-    /*@}*/
-
-
-    /** @name Query Methods */
-    /*@{*/
-    /** \brief Return true if entity is a vertex */
-    bool isVertex() const {return dim_==0;}
-
-    /** \brief Return true if entity is a line segment */
-    bool isLine() const {return dim_==1;}
-
-    /** \brief Return true if entity is a triangle */
-    bool isTriangle() const {return basicType_==simplex && dim_==2;}
-
-    /** \brief Return true if entity is a quadrilateral */
-    bool isQuadrilateral() const {return basicType_==cube && dim_==2;}
-
-    /** \brief Return true if entity is a tetrahedron */
-    bool isTetrahedron() const {return basicType_==simplex && dim_==3;}
-
-    /** \brief Return true if entity is a pyramid */
-    bool isPyramid() const {return basicType_==pyramid;}
-
-    /** \brief Return true if entity is a prism */
-    bool isPrism() const {return basicType_==prism;}
-
-    /** \brief Return true if entity is a hexahedron */
-    bool isHexahedron() const {return basicType_==cube && dim_==3;}
-
-    /** \brief Return true if entity is a simplex of any dimension */
-    bool isSimplex() const {return basicType_==simplex || dim_ < 2;}
-
-    /** \brief Return true if entity is a cube of any dimension */
-    bool isCube() const {return basicType_==cube || dim_ < 2;}
-
-    /** \brief Return dimension of the entity */
-    unsigned int dim() const {return dim_;}
-
-    /** \brief Return the basic type of the entity */
-    BasicType basicType() const {return basicType_;}
-
-    /*@}*/
-
-    /** \brief Check for equality. This method knows that in dimension 0 and 1
-                    all BasicTypes are equal.
-     */
-    bool operator==(const GeometryType& other) const {
-      return ( (dim()==0 && other.dim()==0)
-               || (dim()==1 && other.dim()==1)
-               || (dim()==other.dim() && basicType_==other.basicType_) );
-    }
-
-    /** \brief Check for inequality */
-    bool operator!=(const GeometryType& other) const {
-      return ! ((*this)==other);
-    }
-
-    /** \brief lesser operation for use with maps */
-    bool operator < (const GeometryType& other) const {
-      if (dim() != other.dim())
-        return dim() < other.dim();
-      else if (dim()==0 || dim()==1)
-        return false;
-
-      return basicType_ < other.basicType_;
-    }
-
-    /** \brief Prints the type to an output stream */
-    friend std::ostream& operator<< (std::ostream& s, const GeometryType& a)
-    {
-      switch (a.basicType_) {
-      case simplex :
-        s << "(simplex, " << a.dim_ << ")";
-        break;
-      case cube :
-        s << "(cube, " << a.dim_ << ")";
-        break;
-      case pyramid :
-        s << "pyramid";
-        break;
-      case prism :
-        s << "prism";
-      }
-
-      return s;
-    }
-
-  };
-
-  /** \brief Prints a GeometryType::BasicType to an output stream */
-  inline std::ostream& operator<< (std::ostream& s, GeometryType::BasicType type)
-  {
-    switch (type) {
-    case GeometryType::simplex : s << "simplex"; break;
-    case GeometryType::cube :    s << "cube";    break;
-    case GeometryType::pyramid : s << "pyramid"; break;
-    case GeometryType::prism :   s << "prism";   break;
-    default : s << "[unknown GeometryType::BasicType: " << int(type) << "]";
-    }
-    return s;
-  }
-}
-
-#endif
diff --git a/common/helpertemplates.hh b/common/helpertemplates.hh
deleted file mode 100644
index 2f92627fb..000000000
--- a/common/helpertemplates.hh
+++ /dev/null
@@ -1,48 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_COMMON_HELPERTEMPLATES
-#define DUNE_COMMON_HELPERTEMPLATES
-
-/** \file
-    \brief Compile-time constraint checks from the Stroustrup FAQ
- */
-
-namespace Dune {
-
-  /**
-     Derived_from<A,B>();
-
-     or
-
-     template<class T> class Container : Derived_from<T,Mybase> {
-      ...
-     };
-   */
-  template<class T, class B> struct Derived_from {
-    static void constraints(T* p) { B* pb = p; }
-    Derived_from() { void (*p)(T*) = constraints; }
-  };
-
-  /** \todo Please doc me! */
-  template<class T1, class T2> struct Can_copy {
-    static void constraints(T1 a, T2 b) { T2 c = a; b = a; }
-    Can_copy() { void (*p)(T1,T2) = constraints; }
-  };
-
-  /** \todo Please doc me! */
-  template<class T1, class T2 = T1> struct Can_compare {
-    static void constraints(T1 a, T2 b) { a==b; a!=b; a<b; }
-    Can_compare() { void (*p)(T1,T2) = constraints; }
-  };
-
-  /** \todo Please doc me! */
-  template<class T1, class T2, class T3 = T1> struct Can_multiply {
-    static void constraints(T1 a, T2 b, T3 c) { c = a*b; }
-    Can_multiply() { void (*p)(T1,T2,T3) = constraints; }
-  };
-
-} // namespace Dune
-
-#endif
diff --git a/common/interfaces.hh b/common/interfaces.hh
deleted file mode 100644
index 26710cbe7..000000000
--- a/common/interfaces.hh
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_INTERFACES_HH
-#define DUNE_INTERFACES_HH
-
-#include "typetraits.hh"
-
-/** @file
-   @author Robert Kloefkorn
-   @brief Provides a Interfaces for detection of specific behavior
- */
-
-namespace Dune {
-
-  //! An interface class for cloneable objects
-  struct Cloneable {
-
-    /** \brief Clones the object
-       clone needs to be redefined by an implementation class, with the
-       return type covariantly adapted. Remember to
-       delete the resulting pointer.
-     */
-    virtual Cloneable* clone() const = 0;
-
-    /** \brief Destructor */
-    virtual ~Cloneable()
-    {}
-
-  };
-
-  //! Tagging interface to indicate that Grid provides typedef ObjectStreamType
-  struct HasObjectStream {};
-
-  //! Helper template (implicit specialisation if GridImp exports an object
-  //! stream
-  template <bool hasStream, class GridImp, class DefaultImp>
-  struct GridObjectStreamOrDefaultHelper {
-    typedef typename GridImp::ObjectStreamType ObjectStreamType;
-  };
-
-  //! Helper template (explicit specialisation if GridImp doesn't export an
-  //! object stream -> DefaultImplementation is exported)
-  template <class GridImp, class DefaultImp>
-  struct GridObjectStreamOrDefaultHelper<false, GridImp, DefaultImp> {
-    typedef DefaultImp ObjectStreamType;
-  };
-
-  //! Template to choose right Object stream type for a given class
-  template <class GridImp, class DefaultImp>
-  struct GridObjectStreamOrDefault {
-    typedef typename GridObjectStreamOrDefaultHelper<
-        Conversion<GridImp, HasObjectStream>::exists,
-        GridImp,
-        DefaultImp>::ObjectStreamType ObjectStreamType;
-  };
-
-  //! Tagging interface to indicate that class is of Type DofManager
-  struct IsDofManager {};
-
-  //! Tagging interface to indicate that Grid has HierarchicIndexSet
-  struct HasHierarchicIndexSet {};
-
-} // end namespace Dune
-#endif
diff --git a/common/iteratorfacades.hh b/common/iteratorfacades.hh
deleted file mode 100644
index 2329a2ae2..000000000
--- a/common/iteratorfacades.hh
+++ /dev/null
@@ -1,713 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_ITERATORFACADES_HH
-#define DUNE_ITERATORFACADES_HH
-#include <iterator>
-#include "typetraits.hh"
-
-namespace Dune
-{
-  /*! \defgroup IteratorFacades Iterator facades
-     \ingroup Common
-
-     \brief Iterator facades for writing stl conformant iterators.
-
-     With using these facades writing iterators for arbitrary containers becomes much less
-     cumbersome as only few functions have to be implemented. All other functions needed by
-     the stl are provided by the facades using the Barton-Nackman trick (also known as
-     curiously recurring template pattern).
-
-     The following example illustrates how a random access iterator might be written:
-
-     \code
-     #include<dune/common/iteratorfacades.hh>
-
-     ...
-
-     template<class C, class T>
-     class TestIterator : public Dune::BidirectionalIteratorFacade<TestIterator<C,T>,T, T&, int>
-     {
-      friend class TestIterator<typename remove_const<C>::type, typename remove_const<T>::type >;
-      friend class TestIterator<const typename remove_const<C>::type, const typename remove_const<T>::type >;
-
-     public:
-
-      // Constructors needed by the facade iterators.
-      TestIterator(): container_(0), position_(0)
-      { }
-
-      TestIterator(C& cont, int pos)
-        : container_(&cont), position_(pos)
-      {}
-
-      TestIterator(const TestIterator<typename remove_const<C>::type, typename remove_const<T>::type >& other)
-        : container_(other.container_), position_(other.position_)
-      {}
-
-
-      TestIterator(const TestIterator<const typename remove_const<C>::type, const typename remove_const<T>::type >& other)
-        : container_(other.container_), position_(other.position_)
-      {}
-
-      // Methods needed by the forward iterator
-      bool equals(const TestIterator<typename remove_const<C>::type,typename remove_const<T>::type>& other) const
-      {
-        return position_ == other.position_ && container_ == other.container_;
-      }
-
-
-      bool equals(const TestIterator<const typename remove_const<C>::type,const typename remove_const<T>::type>& other) const
-      {
-        return position_ == other.position_ && container_ == other.container_;
-      }
-
-      T& dereference() const
-      {
-        return container_->values_[position_];
-      }
-
-      void increment()
-      {
-     ++position_;
-      }
-
-      // Additional function needed by BidirectionalIterator
-      void decrement()
-     {
-        --position_;
-      }
-
-      // Additional function needed by RandomAccessIterator
-      T& elementAt(int i)const
-      {
-        return container_->operator[](position_+i);
-      }
-
-      void advance(int n)
-      {
-        position_=position_+n;
-      }
-
-      std::ptrdiff_t distanceTo(TestIterator<const typename remove_const<C>::type,const typename remove_const<T>::type> other) const
-      {
-        assert(other.container_==container_);
-        return other.position_ - position_;
-      }
-
-      std::ptrdiff_t distanceTo(TestIterator<const typename remove_const<C>::type, typename remove_const<T>::type> other) const
-      {
-        assert(other.container_==container_);
-        return other.position_ - position_;
-      }
-     private:
-      C *container_;
-      size_t position_;
-     };
-
-     \endcode
-     See dune/common/test/iteratorbase.hh for details.
-   */
-
-
-  /**
-   * @file
-   * @brief This file implements iterator facade classes for writing stl conformant iterators.
-   *
-   * With using these facades writing iterators for arbitrary containers becomes much less
-   * cumbersome as only few functions have to be implemented. All other functions needed by
-   * the stl are provided by the facades using the Barton-Nackman trick (also known as
-   * curiously recurring template pattern.
-   */
-
-  /** @addtogroup IteratorFacades
-   *
-   * @{
-   */
-  /**
-   * @brief Base class for stl conformant forward iterators.
-   *
-   * \tparam T The derived class
-   * \tparam V The value type
-   * \tparam R The reference type
-   * \tparam D The type for differences between two iterators
-   */
-  template<class T, class V, class R = V&, class D = std::ptrdiff_t>
-  class ForwardIteratorFacade :
-    public std::iterator< std::forward_iterator_tag,
-        typename remove_const<V>::type,                   // std::iterator needs mutable value type
-        D,
-        V*,
-        R>
-  {
-
-  public:
-    /**
-     * @brief The type of derived iterator.
-     *
-     * The iterator has to define following
-     * functions have to be present:
-     *
-     * \code
-     *
-     * // Access the value referred to.
-     * Reference dereference() const;
-     *
-     * // Compare for equality with iterator j
-     * equals(i);
-     *
-     * // position the iterator at the next element.
-     * void increment()
-     * \endcode
-     *
-     * For an elaborate explanation see the
-     * <A HREF="http://www.sgi.com/tech/stl/iterator_traits.html">STL Documentation</A>!
-     */
-    typedef T DerivedType;
-
-    /**
-     * @brief The type of value accessed through the iterator.
-     */
-    typedef V Value;
-
-    /**
-     * @brief The pointer to the Value.
-     */
-    typedef V* Pointer;
-
-    /**
-     * @brief The type of the difference between two positions.
-     */
-    typedef D DifferenceType;
-
-    /**
-     * @brief The type of the reference to the values accessed.
-     */
-    typedef R Reference;
-
-    /** @brief Dereferencing operator. */
-    Reference operator*() const
-    {
-      return static_cast<DerivedType const*>(this)->dereference();
-    }
-
-    Pointer operator->() const
-    {
-      return &(static_cast<const DerivedType *>(this)->dereference());
-    }
-
-    /** @brief Preincrement operator. */
-    DerivedType& operator++()
-    {
-      static_cast<DerivedType *>(this)->increment();
-      return *static_cast<DerivedType *>(this);
-    }
-
-    /** @brief Postincrement operator. */
-    DerivedType operator++(int)
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      this->operator++();
-      return tmp;
-    }
-  };
-
-  /**
-   * @brief Checks for equality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator==(const ForwardIteratorFacade<T1,V1,R1,D>& lhs,
-             const ForwardIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Checks for inequality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator!=(const ForwardIteratorFacade<T1,V1,R1,D>& lhs,
-             const ForwardIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return !static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return !static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Facade class for stl conformant bidirectional iterators.
-   *
-   */
-  template<class T, class V, class R = V&, class D = std::ptrdiff_t>
-  class BidirectionalIteratorFacade :
-    public std::iterator< std::bidirectional_iterator_tag,
-        typename remove_const<V>::type,                   // std::iterator needs mutable value type
-        D,
-        V*,
-        R>
-  {
-
-  public:
-    /**
-     * @brief The type of derived iterator.
-     *
-     * The iterator has to define following
-     * functions have to be present:
-     *
-     * \code
-     *
-     * // Access the value referred to.
-     * Reference dereference() const;
-     *
-     * // Compare for equality with j
-     * bool equals(j);
-     *
-     * // position the iterator at the next element.
-     * void increment()
-     *
-     * // position the iterator at the previous element.
-     * void decrement()
-     *
-     * \endcode
-     *
-     * For an elaborate explanation see the
-     * <A HREF="http://www.sgi.com/tech/stl/iterator_traits.html">STL Documentation</A>
-     */
-    typedef T DerivedType;
-
-    /**
-     * @brief The type of value accessed through the iterator.
-     */
-    typedef V Value;
-
-    /**
-     * @brief The pointer to the Value.
-     */
-    typedef V* Pointer;
-
-    /**
-     * @brief The type of the difference between two positions.
-     */
-    typedef D DifferenceType;
-
-    /**
-     * @brief The type of the reference to the values accessed.
-     */
-    typedef R Reference;
-
-    /** @brief Dereferencing operator. */
-    Reference operator*() const
-    {
-      return static_cast<DerivedType const*>(this)->dereference();
-    }
-
-    Pointer operator->() const
-    {
-      return &(static_cast<const DerivedType *>(this)->dereference());
-    }
-
-    /** @brief Preincrement operator. */
-    DerivedType& operator++()
-    {
-      static_cast<DerivedType *>(this)->increment();
-      return *static_cast<DerivedType *>(this);
-    }
-
-    /** @brief Postincrement operator. */
-    DerivedType operator++(int)
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      this->operator++();
-      return tmp;
-    }
-
-
-    /** @brief Preincrement operator. */
-    DerivedType& operator--()
-    {
-      static_cast<DerivedType *>(this)->decrement();
-      return *static_cast<DerivedType *>(this);
-    }
-
-    /** @brief Postincrement operator. */
-    DerivedType operator--(int)
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      this->operator--();
-      return tmp;
-    }
-  };
-
-  /**
-   * @brief Checks for equality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator==(const BidirectionalIteratorFacade<T1,V1,R1,D>& lhs,
-             const BidirectionalIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Checks for inequality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator!=(const BidirectionalIteratorFacade<T1,V1,R1,D>& lhs,
-             const BidirectionalIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return !static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return !static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Base class for stl conformant forward iterators.
-   *
-   */
-  template<class T, class V, class R = V&, class D = std::ptrdiff_t>
-  class RandomAccessIteratorFacade :
-    public std::iterator< std::random_access_iterator_tag,
-        typename remove_const<V>::type,                   // std::iterator needs mutable value type
-        D,
-        V*,
-        R>
-  {
-
-  public:
-    /**
-     * @brief The type of derived iterator.
-     *
-     * The iterator has to define following
-     * functions have to be present:
-     *
-     * \code
-     *
-     * // Access the value referred to.
-     * Reference dereference() const;
-     *
-     * // Compare for equality with j
-     * equals(i);
-     *
-     * // position the iterator at the next element.
-     * void increment()
-     *
-     * // position the iterator at the previous element.
-     * void decrement()
-     *
-     * // advance the iterator by a number of positions-
-     * void advance(DifferenceType n);
-     * // calculate the distance to another iterator.
-     * // One should incorporate an assertion wether
-     * // the same containers are referenced
-     * DifferenceType distanceTo(j) const;
-     * \endcode
-     *
-     * For an elaborate explanation see the
-     * <A HREF="http://www.sgi.com/tech/stl/iterator_traits.html">STL Documentation</A>
-     */
-    typedef T DerivedType;
-
-    /**
-     * @brief The type of value accessed through the iterator.
-     */
-    typedef V Value;
-
-    /**
-     * @brief The pointer to the Value.
-     */
-    typedef V* Pointer;
-
-    /**
-     * @brief The type of the difference between two positions.
-     */
-    typedef D DifferenceType;
-
-    /**
-     * @brief The type of the reference to the values accessed.
-     */
-    typedef R Reference;
-
-    /** @brief Dereferencing operator. */
-    Reference operator*() const
-    {
-      return static_cast<DerivedType const*>(this)->dereference();
-    }
-
-    Pointer operator->() const
-    {
-      return &(static_cast<const DerivedType *>(this)->dereference());
-    }
-
-    /**
-     * @brief Get the element n positions from the current one.
-     * @param n The distance to the element.
-     * @return The element at that distance.
-     */
-    Reference operator[](DifferenceType n) const
-    {
-      return static_cast<const DerivedType *>(this)->elementAt(n);
-    }
-
-    /** @brief Preincrement operator. */
-    DerivedType& operator++()
-    {
-      static_cast<DerivedType *>(this)->increment();
-      return *static_cast<DerivedType *>(this);
-    }
-
-    /** @brief Postincrement operator. */
-    DerivedType operator++(int)
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      this->operator++();
-      return tmp;
-    }
-
-    DerivedType& operator+=(DifferenceType n)
-    {
-      static_cast<DerivedType *>(this)->advance(n);
-      return *static_cast<DerivedType *>(this);
-    }
-
-    DerivedType operator+(DifferenceType n) const
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      tmp.advance(n);
-      return tmp;
-    }
-
-
-    /** @brief Predecrement operator. */
-    DerivedType& operator--()
-    {
-      static_cast<DerivedType *>(this)->decrement();
-      return *static_cast<DerivedType *>(this);
-    }
-
-    /** @brief Postdecrement operator. */
-    DerivedType operator--(int)
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      this->operator--();
-      return tmp;
-    }
-
-    DerivedType& operator-=(DifferenceType n)
-    {
-      static_cast<DerivedType *>(this)->advance(-n);
-      return *static_cast<DerivedType *>(this);
-    }
-
-    DerivedType operator-(DifferenceType n) const
-    {
-      DerivedType tmp(static_cast<DerivedType const&>(*this));
-      tmp.advance(-n);
-      return tmp;
-    }
-
-
-  };
-
-  /**
-   * @brief Checks for equality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator==(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-             const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Checks for inequality.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator!=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-             const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return !static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
-    else
-      return !static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
-  }
-
-  /**
-   * @brief Comparison operator.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator<(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-            const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))>0;
-    else
-      return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))<0;
-  }
-
-
-  /**
-   * @brief Comparison operator.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator<=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-             const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))>=0;
-    else
-      return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))<=0;
-  }
-
-
-  /**
-   * @brief Comparison operator.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator>(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-            const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))<0;
-    else
-      return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))>0;
-  }
-
-  /**
-   * @brief Comparison operator.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,bool>::type
-  operator>=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-             const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))<=0;
-    else
-      return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))>=0;
-  }
-
-  /**
-   * @brief Calculates the difference between two pointers.
-   *
-   * This operation is only defined if either D2
-   * is convertible to D1 or vice versa. If that is
-   * not the case the compiler will report an error
-   * as EnableIfInterOperable<D1,D2,bool>::type is
-   * not defined.
-   *
-   */
-  template<class T1, class V1, class R1, class D,
-      class T2, class V2, class R2>
-  inline typename EnableIfInterOperable<T1,T2,D>::type
-  operator-(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
-            const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
-  {
-    if(Conversion<T2,T1>::exists)
-      return -static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs));
-    else
-      return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs));
-  }
-
-  /** @} */
-}
-#endif
diff --git a/common/lcm.hh b/common/lcm.hh
deleted file mode 100644
index 75403119b..000000000
--- a/common/lcm.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_LCM_HH
-#define DUNE_LCM_HH
-
-#include <dune/common/static_assert.hh>
-#include <dune/common/gcd.hh>
-
-namespace Dune
-{
-
-  /**
-   * @addtogroup Common
-   * @{
-   */
-  /**
-   * @file
-   * This file provides template constructs for calculation the
-   * least common multiple.
-   */
-
-  /**
-   * @brief Calculate the least common multiple of two numbers
-   */
-  template<long m, long n>
-  struct Lcm
-  {
-    static void conceptCheck()
-    {
-      dune_static_assert(0<m, "m must be positive!");
-      dune_static_assert(0<n, "n must be positive!");
-    }
-    /**
-     * @brief The least common multiple of the template parameters
-     * m and n.
-     */
-    const static long value = (m/Gcd<m,n>::value)*n;
-  };
-}
-
-#endif
diff --git a/common/lru.hh b/common/lru.hh
deleted file mode 100644
index 14e21813f..000000000
--- a/common/lru.hh
+++ /dev/null
@@ -1,219 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_COMMON_LRU_HH
-#define DUNE_COMMON_LRU_HH
-
-#include <list>
-#include <utility>
-#include <map>
-
-/** @file
-    @author Christian Engwer
-    @brief LRU Cache Container, using an STL like interface
-
-    Implementatation of an LRU (least recently used) cache
-    container. This implementation follows the approach presented in
-
-    \url
-    http://aim.adc.rmit.edu.au/phd/sgreuter/papers/graphite2003.pdf
-
- */
-
-namespace Dune {
-
-  template <typename _Key, typename _Tp,
-      typename _Alloc = std::allocator<_Tp> >
-  struct _lru_default_traits
-  {
-    typedef _Key key_type;
-    typedef _Alloc allocator;
-    typedef std::list< std::pair<_Key, _Tp> > list_type;
-    typedef typename list_type::iterator iterator;
-    typedef typename std::less<key_type> cmp;
-    typedef std::map< key_type, iterator, cmp,
-        typename allocator::template rebind<std::pair<const key_type, iterator> >::other > map_type;
-  };
-
-  template <typename _Key, typename _Tp,
-      typename _Traits = _lru_default_traits<_Key, _Tp> >
-  class lru
-  {
-    typedef typename _Traits::list_type list_type;
-    typedef typename _Traits::map_type map_type;
-    typedef typename _Traits::allocator allocator;
-    typedef typename map_type::iterator map_iterator;
-    typedef typename map_type::const_iterator const_map_iterator;
-
-  public:
-    typedef typename _Traits::key_type key_type;
-    typedef typename allocator::value_type value_type;
-    typedef typename allocator::pointer pointer;
-    typedef typename allocator::const_pointer const_pointer;
-    typedef typename allocator::const_reference const_reference;
-    typedef typename allocator::reference reference;
-    typedef typename allocator::size_type size_type;
-    typedef typename list_type::iterator iterator;
-    typedef typename list_type::const_iterator const_iterator;
-
-    /**
-     *  Returns a read/write reference to the data of the most
-     *  recently used entry.
-     */
-    reference front()
-    {
-      return _data.front().second;
-    }
-
-    /**
-     *  Returns a read-only (constant) reference to the data of the
-     *  most recently used entry.
-     */
-    const_reference front() const
-    {
-      return _data.front().second;
-    }
-
-    /**
-     *  Returns a read/write reference to the data of the least
-     *  recently used entry.
-     */
-    reference back()
-    {
-      return _data.back().second;
-    }
-
-    /**
-     *  Returns a read-only (constant) reference to the data of the
-     *  least recently used entry.
-     */
-    const_reference back (int i) const
-    {
-      return _data.back().second;
-    }
-
-
-    /**
-     * @brief Removes the first element.
-     */
-    const void pop_front()
-    {
-      key_type k = _data.front().first;
-      _data.pop_front();
-      _index.erase(k);
-    }
-    /**
-     * @brief Removes the last element.
-     */
-    const void pop_back()
-    {
-      key_type k = _data.back().first;
-      _data.pop_back();
-      _index.erase(k);
-    }
-
-    /**
-     * @brief Finds the element whose key is k.
-     *
-     * @return iterator
-     */
-    iterator find (const key_type & key)
-    {
-      const map_iterator it = _index.find(key);
-      if (it == _index.end()) return _data.end();
-      return it->second;
-    }
-
-    /**
-     * @brief Finds the element whose key is k.
-     *
-     * @return const_iterator
-     */
-    const_iterator find (const key_type & key) const
-    {
-      const map_iterator it = _index.find(key);
-      if (it == _index.end()) return _data.end();
-      return it->second;
-    }
-
-    /**
-     * @brief Insert a value into the container
-     *
-     * Stores value under key and marks it as most recent.
-     *
-     * @param key   associated with data
-     * @param data  to store
-     *
-     * @return reference of stored data
-     */
-    reference insert (const key_type & key, const_reference data)
-    {
-      std::pair<key_type, value_type> x(key, data);
-      /* insert item as mru */
-      iterator it = _data.insert(_data.begin(), x);
-      /* store index */
-      _index[key] = it;
-
-      return it->second;
-    }
-
-    /**
-     * @copydoc touch
-     */
-    reference insert (const key_type & key)
-    {
-      return touch (key);
-    }
-
-    /**
-     * @brief mark data associateed with key as most recent
-     *
-     * @return reference of stored data
-     */
-    reference touch (const key_type & key)
-    {
-      /* query _index for iterator */
-      iterator it = _index[key];
-      /* update _data
-         move it to the front
-       */
-      _data.splice(_data.begin(), _data, it);
-      return it->second;
-    }
-
-    /**
-     *
-     */
-    size_type size() const
-    {
-      return _data.size();
-    }
-
-    /**
-     *
-     */
-    void resize(size_type new_size)
-    {
-      assert(new_size <= size());
-
-      while (new_size < size())
-        pop_back();
-    }
-
-    /**
-     *
-     */
-    void clear()
-    {
-      _data.clear();
-      _index.clear();
-    }
-
-  private:
-    list_type _data;
-    map_type _index;
-
-  };
-
-} // namespace Dune
-
-#endif // DUNE_COMMON_LRU_HH
diff --git a/common/misc.hh b/common/misc.hh
deleted file mode 100644
index e0d93bb90..000000000
--- a/common/misc.hh
+++ /dev/null
@@ -1,135 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef MISC_HH
-#define MISC_HH
-
-/** \file
-    \brief Miscellaneous helper stuff
- */
-
-#include <iostream>
-#include <sstream>
-#include "exceptions.hh"
-#include "deprecated.hh"
-
-namespace Dune {
-
-  //! Check condition at compilation time
-  template <bool flag> class CompileTimeChecker;
-
-  //! it exists only an implementation for true so the compiler throws an
-  //! error if the condition is false
-  template <> class CompileTimeChecker<true> { } DUNE_DEPRECATED;
-
-
-  /** \brief Map an integer value to a type
-
-     This comes in handy if one tries to emulate member function specialization.
-     The idea how to do it is presented in "Modern C++ Design" by Alexandrescu.
-   */
-  template <int N>
-  struct Int2Type {
-    enum { value = N };
-  };
-
-  /** @addtogroup Common
-
-          @{
-   */
-
-  //! Return the sign of the value
-  template <class T>
-  int sign(const T& val)
-  {
-    return (val < 0 ? -1 : 1);
-  }
-
-  /** \brief Compute the square of T */
-  template<class T>
-  T SQR (T t)
-  {
-    return t*t;
-  }
-
-  //! Calculates m^p at compile time
-  template <int m, int p>
-  struct Power_m_p
-  {
-    // power stores m^p
-    enum { power = (m * Power_m_p<m,p-1>::power ) };
-  };
-
-  //! end of recursion via specialization
-  template <int m>
-  struct Power_m_p< m , 0>
-  {
-    // m^0 = 1
-    enum { power = 1 };
-  };
-
-  //! Calculates the factorial of m at compile time
-  template <int m>
-  struct Factorial
-  {
-    //! factorial stores m!
-    enum { factorial = m * Factorial<m-1>::factorial };
-  };
-
-  //! end of recursion of factorial via specialization
-  template <>
-  struct Factorial<0>
-  {
-    // 0! = 1
-    enum { factorial = 1 };
-  };
-
-  //********************************************************************
-  //
-  // generate filenames with timestep number in it
-  //
-  //********************************************************************
-
-  /** \brief Generate filenames with timestep number in it */
-  inline std::string genFilename(const std::string& path,
-                                 const std::string& fn,
-                                 int ntime,
-                                 int precision = 6)
-  {
-    std::ostringstream name;
-
-    if(path.size() > 0)
-    {
-      name << path;
-      name << "/";
-    }
-    name << fn;
-
-    char cp[256];
-    switch(precision)
-    {
-    case 2  : { sprintf(cp, "%02d", ntime); break; }
-    case 3  : { sprintf(cp, "%03d", ntime); break; }
-    case 4  : { sprintf(cp, "%04d", ntime); break; }
-    case 5  : { sprintf(cp, "%05d", ntime); break; }
-    case 6  : { sprintf(cp, "%06d", ntime); break; }
-    case 7  : { sprintf(cp, "%07d", ntime); break; }
-    case 8  : { sprintf(cp, "%08d", ntime); break; }
-    case 9  : { sprintf(cp, "%09d", ntime); break; }
-    case 10 : { sprintf(cp, "%010d", ntime); break; }
-    default :
-    {
-      DUNE_THROW(Exception, "Couldn't gernerate filename with precision = "<<precision);
-    }
-    }
-    name << cp;
-
-    // here implicitly a string is generated
-    return name.str();
-  }
-
-  /** @} */
-
-}
-
-
-#endif
diff --git a/common/modules b/common/modules
deleted file mode 100644
index 865222b90..000000000
--- a/common/modules
+++ /dev/null
@@ -1,14 +0,0 @@
-/* This file determines the order how things appear in the doxygen
-   documentation within the dune-common module. It works like this:
-
-   @defgroup commands appear only in this file here which is
-   parsed before the other files (because it is mentioned first 
-   in the Doxyfile).
-
-   Only @addtogroup is used in the code documentation.
-*/
-
-  /**
-	 @defgroup COGeometryType GeometryType
-	 @ingroup Common
-  */
diff --git a/common/mpicollectivecommunication.hh b/common/mpicollectivecommunication.hh
deleted file mode 100644
index 517558ca5..000000000
--- a/common/mpicollectivecommunication.hh
+++ /dev/null
@@ -1,333 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_MPICOLLECTIVECOMMUNICATION_HH
-#define DUNE_MPICOLLECTIVECOMMUNICATION_HH
-
-#include <iostream>
-#include <complex>
-#include <algorithm>
-#include <functional>
-
-#include "exceptions.hh"
-#include "collectivecommunication.hh"
-#include "binaryfunctions.hh"
-
-#if HAVE_MPI
-// MPI header
-#include <mpi.h>
-
-namespace Dune
-{
-  //=======================================================
-  // use singleton pattern and template specialization to
-  // generate MPI data types
-  //=======================================================
-
-  // any type is interpreted as contiguous piece of memory
-  // i.e. only value types are allowed !
-  template<typename T>
-  class Generic_MPI_Datatype
-  {
-  public:
-    static MPI_Datatype get ()
-    {
-      if (type==0)
-      {
-        type = new MPI_Datatype;
-        MPI_Type_contiguous(sizeof(T),MPI_BYTE,type);
-        MPI_Type_commit(type);
-      }
-      return *type;
-    }
-  private:
-    Generic_MPI_Datatype () {}
-    Generic_MPI_Datatype (const Generic_MPI_Datatype& ) {}
-    static MPI_Datatype *type;
-  };
-
-  template<typename T>
-  MPI_Datatype* Generic_MPI_Datatype<T>::type = 0;
-
-  // A Macro for defining traits for the primitive data types
-#define ComposeMPITraits(p,m) \
-  template<> \
-  struct Generic_MPI_Datatype<p>{ \
-    static inline MPI_Datatype get(){ \
-      return m; \
-    } \
-  }
-
-
-  ComposeMPITraits(char, MPI_CHAR);
-  ComposeMPITraits(unsigned char,MPI_UNSIGNED_CHAR);
-  ComposeMPITraits(short,MPI_SHORT);
-  ComposeMPITraits(unsigned short,MPI_UNSIGNED_SHORT);
-  ComposeMPITraits(int,MPI_INT);
-  ComposeMPITraits(unsigned int,MPI_UNSIGNED);
-  ComposeMPITraits(long,MPI_LONG);
-  ComposeMPITraits(unsigned long,MPI_UNSIGNED_LONG);
-  ComposeMPITraits(float,MPI_FLOAT);
-  ComposeMPITraits(double,MPI_DOUBLE);
-  ComposeMPITraits(long double,MPI_LONG_DOUBLE);
-
-#undef ComposeMPITraits
-
-
-  //=======================================================
-  // use singleton pattern and template specialization to
-  // generate MPI operations
-  //=======================================================
-
-  template<typename Type, typename BinaryFunction>
-  class Generic_MPI_Op
-  {
-
-  public:
-    static MPI_Op get ()
-    {
-      if (op==0)
-      {
-        op = new MPI_Op;
-        MPI_Op_create((void (*)(void*, void*, int*, MPI_Datatype*))&operation,true,op);
-      }
-      return *op;
-    }
-  private:
-    static void operation (Type *in, Type *inout, int *len, MPI_Datatype *dptr)
-    {
-      BinaryFunction func;
-
-      for (int i=0; i< *len; ++i, ++in, ++inout) {
-        Type temp;
-        temp = func(*in, *inout);
-        *inout = temp;
-      }
-    }
-    Generic_MPI_Op () {}
-    Generic_MPI_Op (const Generic_MPI_Op& ) {}
-    static MPI_Op* op;
-  };
-
-
-  template<typename Type, typename BinaryFunction>
-  MPI_Op* Generic_MPI_Op<Type,BinaryFunction>::op = 0;
-
-#define ComposeMPIOp(type,func,op) \
-  template<> \
-  class Generic_MPI_Op<type, func<type> >{ \
-  public:\
-    static MPI_Op get(){ \
-      return op; \
-    } \
-  private:\
-    Generic_MPI_Op () {}\
-    Generic_MPI_Op (const Generic_MPI_Op & ) {}\
-  }
-
-
-  ComposeMPIOp(char, std::plus, MPI_SUM);
-  ComposeMPIOp(unsigned char, std::plus, MPI_SUM);
-  ComposeMPIOp(short, std::plus, MPI_SUM);
-  ComposeMPIOp(unsigned short, std::plus, MPI_SUM);
-  ComposeMPIOp(int, std::plus, MPI_SUM);
-  ComposeMPIOp(unsigned int, std::plus, MPI_SUM);
-  ComposeMPIOp(long, std::plus, MPI_SUM);
-  ComposeMPIOp(unsigned long, std::plus, MPI_SUM);
-  ComposeMPIOp(float, std::plus, MPI_SUM);
-  ComposeMPIOp(double, std::plus, MPI_SUM);
-  ComposeMPIOp(long double, std::plus, MPI_SUM);
-
-  ComposeMPIOp(char, std::multiplies, MPI_PROD);
-  ComposeMPIOp(unsigned char, std::multiplies, MPI_PROD);
-  ComposeMPIOp(short, std::multiplies, MPI_PROD);
-  ComposeMPIOp(unsigned short, std::multiplies, MPI_PROD);
-  ComposeMPIOp(int, std::multiplies, MPI_PROD);
-  ComposeMPIOp(unsigned int, std::multiplies, MPI_PROD);
-  ComposeMPIOp(long, std::multiplies, MPI_PROD);
-  ComposeMPIOp(unsigned long, std::multiplies, MPI_PROD);
-  ComposeMPIOp(float, std::multiplies, MPI_PROD);
-  ComposeMPIOp(double, std::multiplies, MPI_PROD);
-  ComposeMPIOp(long double, std::multiplies, MPI_PROD);
-
-  ComposeMPIOp(char, Min, MPI_MIN);
-  ComposeMPIOp(unsigned char, Min, MPI_MIN);
-  ComposeMPIOp(short, Min, MPI_MIN);
-  ComposeMPIOp(unsigned short, Min, MPI_MIN);
-  ComposeMPIOp(int, Min, MPI_MIN);
-  ComposeMPIOp(unsigned int, Min, MPI_MIN);
-  ComposeMPIOp(long, Min, MPI_MIN);
-  ComposeMPIOp(unsigned long, Min, MPI_MIN);
-  ComposeMPIOp(float, Min, MPI_MIN);
-  ComposeMPIOp(double, Min, MPI_MIN);
-  ComposeMPIOp(long double, Min, MPI_MIN);
-
-  ComposeMPIOp(char, Max, MPI_MAX);
-  ComposeMPIOp(unsigned char, Max, MPI_MAX);
-  ComposeMPIOp(short, Max, MPI_MAX);
-  ComposeMPIOp(unsigned short, Max, MPI_MAX);
-  ComposeMPIOp(int, Max, MPI_MAX);
-  ComposeMPIOp(unsigned int, Max, MPI_MAX);
-  ComposeMPIOp(long, Max, MPI_MAX);
-  ComposeMPIOp(unsigned long, Max, MPI_MAX);
-  ComposeMPIOp(float, Max, MPI_MAX);
-  ComposeMPIOp(double, Max, MPI_MAX);
-  ComposeMPIOp(long double, Max, MPI_MAX);
-
-#undef ComposeMPIOp
-
-
-  //=======================================================
-  // use singleton pattern and template specialization to
-  // generate MPI operations
-  //=======================================================
-
-  /*! \brief Specialization of CollectiveCommunication for MPI
-        \ingroup ParallelCommunication
-   */
-  template<>
-  class CollectiveCommunication<MPI_Comm>
-  {
-  public:
-    //! Instantiation using a MPI communicator
-    CollectiveCommunication (const MPI_Comm& c)
-      : communicator(c)
-    {
-      if(communicator!=MPI_COMM_NULL) {
-        MPI_Comm_rank(communicator,&me);
-        MPI_Comm_size(communicator,&procs);
-      }else{
-        procs=0;
-        me=-1;
-      }
-    }
-
-    //! @copydoc CollectiveCommunication::rank()
-    int rank () const
-    {
-      return me;
-    }
-
-    //! @copydoc CollectiveCommunication::size()
-    int size () const
-    {
-      return procs;
-    }
-
-    //! @copydoc CollectiveCommunication::sum(T&)
-    template<typename T>
-    T sum (T& in) const     // MPI does not know about const :-(
-    {
-      T out;
-      allreduce<std::plus<T> >(&in,&out,1);
-      return out;
-    }
-
-    //! @copydoc CollectiveCommunication::sum(T*,int)
-    template<typename T>
-    int sum (T* inout, int len) const
-    {
-      return allreduce<std::plus<T> >(inout,len);
-    }
-
-    //! @copydoc CollectiveCommunication::prod(T&)
-    template<typename T>
-    T prod (T& in) const     // MPI does not know about const :-(
-    {
-      T out;
-      allreduce<std::multiplies<T> >(&in,&out,1);
-      return out;
-    }
-
-    //! @copydoc CollectiveCommunication::prod(T*,int)
-    template<typename T>
-    int prod (T* inout, int len) const
-    {
-      return allreduce<std::plus<T> >(inout,len);
-    }
-
-    //! @copydoc CollectiveCommunication::min(T&)
-    template<typename T>
-    T min (T& in) const     // MPI does not know about const :-(
-    {
-      T out;
-      allreduce<Min<T> >(&in,&out,1);
-      return out;
-    }
-
-    //! @copydoc CollectiveCommunication::min(T*,int)
-    template<typename T>
-    int min (T* inout, int len) const
-    {
-      return allreduce<Min<T> >(inout,len);
-    }
-
-
-    //! @copydoc CollectiveCommunication::max(T&)
-    template<typename T>
-    T max (T& in) const     // MPI does not know about const :-(
-    {
-      T out;
-      allreduce<Max<T> >(&in,&out,1);
-      return out;
-    }
-
-    //! @copydoc CollectiveCommunication::max(T*,int)
-    template<typename T>
-    int max (T* inout, int len) const
-    {
-      return allreduce<Max<T> >(inout,len);
-    }
-
-    //! @copydoc CollectiveCommunication::barrier()
-    int barrier () const
-    {
-      return MPI_Barrier(communicator);
-    }
-
-    //! @copydoc CollectiveCommunication::broadcast()
-    template<typename T>
-    int broadcast (T* inout, int len, int root) const
-    {
-      return MPI_Bcast(inout,len,Generic_MPI_Datatype<T>::get(),root,communicator);
-    }
-
-    //! @copydoc CollectiveCommunication::gather()
-    template<typename T>
-    int gather (T* in, T* out, int len, int root) const     // note out must have space for P*len elements
-    {
-      return MPI_Gather(in,len,Generic_MPI_Datatype<T>::get(),
-                        out,len,Generic_MPI_Datatype<T>::get(),
-                        root,communicator);
-    }
-
-    operator MPI_Comm () const
-    {
-      return communicator;
-    }
-
-    template<typename BinaryFunction, typename Type>
-    int allreduce(Type* inout, int len) const
-    {
-      Type* out = new Type[len];
-      int ret = allreduce<BinaryFunction>(inout,out,len);
-      std::copy(out, out+len, inout);
-      delete[] out;
-      return ret;
-    }
-
-    template<typename BinaryFunction, typename Type>
-    int allreduce(Type* in, Type* out, int len) const
-    {
-      return MPI_Allreduce(in, out, len, Generic_MPI_Datatype<Type>::get(),
-                           Generic_MPI_Op<Type, BinaryFunction>::get(),communicator);
-    }
-
-  private:
-    MPI_Comm communicator;
-    int me;
-    int procs;
-  };
-} // namespace dune
-
-#endif
-#endif
diff --git a/common/mpihelper.hh b/common/mpihelper.hh
deleted file mode 100644
index b0d5eec62..000000000
--- a/common/mpihelper.hh
+++ /dev/null
@@ -1,241 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id: $
-#ifndef DUNE_MPIHELPER
-#define DUNE_MPIHELPER
-
-#include <cassert>
-#include "collectivecommunication.hh"
-#if HAVE_MPI
-#include "mpi.h"
-#include "mpicollectivecommunication.hh"
-#endif
-
-#include "stdstreams.hh"
-
-namespace Dune
-{
-  /**
-   * @file
-   * @brief This file contains helpers for dealing with MPI.
-   * @ingroup ParallelCommunication
-   *
-   * Basically there are two helpers available:
-   * <dl>
-   *   <dt>FakeMPIHelper</dt>
-   *   <dd>A class adhering to the interface of MPIHelper
-   *       that does not need MPI at all. This can be used
-   *       to create a sequential program even if MPI is
-   *       used to compile it.
-   *   </dd>
-   *   <dt>MPIHelper</dt>
-   *   <dd>A real MPI helper. When the singleton
-   *       gets instantiated MPI_Init will be
-   *       called and before the program exits
-   *       MPI_Finalize will be called.
-   *   </dd>
-   * </dl>
-   *
-   * Example of who to use these classes:
-   *
-   *   A program that is parallel if compiled with MPI
-   *   and sequential otherwise:
-   *   \code
-   *   int main(int argc, char** argv){
-   *      typedef Dune::MPIHelper MPIHelper;
-   *      MPIHelper::instance(&argc, &argv);
-   *      typename MPIHelper::MPICommunicator world =
-   *        MPIHelper::getCommunicator();
-   *      ...
-   *   \endcode
-   *
-   * If one wants to have sequential program even if the code is
-   * compiled with mpi then one simply has to exchange the typedef
-   * with \code typedef Dune::MPIHelper FakeMPIHelper; \endcode.
-   *
-   * For checking whether we really use MPI or just fake please use
-   * MPIHelper::isFake (this is also possible at compile time!)
-   */
-  /**
-   * @brief A fake mpi helper.
-   *
-   * This helper can be used if no MPI is available
-   * or one wants to run sequentially even if MPI is
-   * available and used.
-   */
-  class FakeMPIHelper
-  {
-  public:
-    enum {
-      /**
-       * @brief Are we fake (i. e. pretend to have MPI support but are compiled
-       * without.
-       */
-      isFake = true
-    };
-
-    /**
-     * @brief The type of the mpi communicator.
-     */
-    typedef int MPICommunicator;
-
-    /**
-     * @brief Get the default communicator.
-     *
-     * @return -1 As we are fake.
-     */
-    static MPICommunicator getCommunicator()
-    {
-      return -1;
-    }
-
-    static CollectiveCommunication<MPICommunicator>
-    getCollectiveCommunication()
-    {
-      return CollectiveCommunication<MPICommunicator>(getCommunicator());
-    }
-
-    /**
-     * @brief Get the singleton instance of the helper.
-     *
-     * This method has to be called with the same arguments
-     * that the main method of the program was called:
-     * \code
-     * int main(int argc, char** argv){
-     *   MPIHelper::instance(argc, argv);
-     *   // program code comes here
-     *   ...
-     * }
-     * \endcode
-     * @param argc The number of arguments provided to main.
-     * @param argv The arguments provided to main.
-     */
-    static FakeMPIHelper& instance(int argc, char** argv)
-    {
-      // create singleton instance
-      static FakeMPIHelper singleton;
-      return singleton;
-    }
-
-    /**
-     * @brief return rank of process, i.e. zero
-     */
-    int rank () const { return 0; }
-    /**
-     * @brief return rank of process, i.e. one
-     */
-    int size () const { return 1; }
-
-  private:
-    FakeMPIHelper() {}
-    FakeMPIHelper(const FakeMPIHelper&);
-    FakeMPIHelper& operator=(const FakeMPIHelper);
-  };
-
-#if HAVE_MPI
-  /**
-   * @brief A real mpi helper.
-   * @ingroup ParallelCommunication
-   *
-   * This helper should be used for parallel programs.
-   */
-  class MPIHelper
-  {
-  public:
-    enum {
-      /**
-       * @brief Are we fake (i. e. pretend to have MPI support but are compiled
-       * without.
-       */
-      isFake = false
-    };
-
-    /**
-     * @brief The type of the mpi communicator.
-     */
-    typedef MPI_Comm MPICommunicator;
-
-    /**
-     * @brief Get the default communicator.
-     *
-     * @return MPI_COMM_WORLD
-     */
-    static MPICommunicator getCommunicator(){
-      return MPI_COMM_WORLD;
-    }
-    static CollectiveCommunication<MPICommunicator>
-    getCollectiveCommunication()
-    {
-      return CollectiveCommunication<MPICommunicator>(getCommunicator());
-    }
-    /**
-     * @brief Get the singleton instance of the helper.
-     *
-     * This method has to be called with the same arguments
-     * that the main method of the program was called:
-     * \code
-     * int main(int argc, char** argv){
-     *   MPIHelper::instance(argc, argv);
-     *   // program code comes here
-     *   ...
-     * }
-     * \endcode
-     * @param argc The number of arguments provided to main.
-     * @param argv The arguments provided to main.
-     */
-    static MPIHelper& instance(int& argc, char**& argv)
-    {
-      // create singleton instance
-      static MPIHelper singleton (argc, argv);
-      return singleton;
-    }
-
-    /**
-     * @brief return rank of process
-     */
-    int rank () const { return rank_; }
-    /**
-     * @brief return number of processes
-     */
-    int size () const { return size_; }
-
-  private:
-    int rank_;
-    int size_;
-
-    //! \brief calls MPI_Init with argc and argv as parameters
-    MPIHelper(int& argc, char**& argv)
-    {
-      rank_ = -1;
-      size_ = -1;
-      MPI_Init(&argc, &argv);
-      MPI_Comm_rank(MPI_COMM_WORLD,&rank_);
-      MPI_Comm_size(MPI_COMM_WORLD,&size_);
-
-      assert( rank_ >= 0 );
-      assert( size_ >= 1 );
-
-      dverb << "Called  MPI_Init on p=" << rank_ << "!" << std::endl;
-    }
-    //! \brief calls MPI_Finalize
-    ~MPIHelper()
-    {
-      MPI_Finalize();
-      dverb << "Called MPI_Finalize on p=" << rank_ << "!" <<std::endl;
-    }
-    MPIHelper(const MPIHelper&);
-    MPIHelper& operator=(const MPIHelper);
-  };
-#else
-  // We do not have MPI therefore FakeMPIHelper
-  // is the MPIHelper
-  /**
-   * @brief If no MPI is available FakeMPIHelper becomes the MPIHelper
-   * @ingroup ParallelCommunication
-   */
-  typedef FakeMPIHelper MPIHelper;
-
-#endif
-
-} // end namespace Dune
-#endif
diff --git a/common/nullptr.hh b/common/nullptr.hh
deleted file mode 100644
index e75000ed2..000000000
--- a/common/nullptr.hh
+++ /dev/null
@@ -1,31 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_NULLPTR_HH
-#define DUNE_NULLPTR_HH
-
-#if ! HAVE_NULLPTR
-
-/**
-   \brief Fallback implementation of nullptr
-
-   see C++ proposal
-   http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
- */
-const                        // this is a const object...
-class dune_nullptr_t {            // of type nullptr_t
-public:
-  template<class T>          // convertible to any type
-  operator T*() const        // of null non-member
-  { return 0; }              // pointer...
-  template<class C, class T> // or any type of null
-  operator T C::*() const    // member pointer...
-  { return 0; }
-private:
-  void operator&() const;    // whose address can't be taken
-} nullptr = {};              // and whose name is nullptr
-
-typedef dune_nullptr_t nullptr_t;
-
-#endif // HAVE_NULLPTR
-
-#endif // DUNE_NULLPTR_HH
diff --git a/common/poolallocator.hh b/common/poolallocator.hh
deleted file mode 100644
index a9e91bd15..000000000
--- a/common/poolallocator.hh
+++ /dev/null
@@ -1,581 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_COMMON_POOLALLOCATOR_HH
-#define DUNE_COMMON_POOLALLOCATOR_HH
-
-#include "alignment.hh"
-#include "static_assert.hh"
-#include "lcm.hh"
-#include <typeinfo>
-#include <iostream>
-#include <cassert>
-
-template<std::size_t size, typename T>
-int testPool();
-
-//forward declarations.
-
-namespace Dune
-{
-
-  template<typename T, std::size_t s>
-  class Pool;
-
-  template<typename T, std::size_t s>
-  class PoolAllocator;
-
-}
-
-namespace std
-{
-  /*
-     template<class T, std::size_t S>
-     inline ostream& operator<<(ostream& os, Dune::Pool<T,S>& pool)
-     {
-     os<<"pool="<<&pool<<" allocated_="<<pool.allocated_;
-     return os;
-     }
-
-     template<class T, std::size_t S>
-     inline ostream& operator<<(ostream& os, Dune::PoolAllocator<T,S>& pool)
-     {
-     os<<pool.memoryPool_<<std::endl;
-     return os;
-     }
-   */
-}
-
-
-namespace Dune
-{
-  /**
-   * @file
-   * This file implements the class ArrayList which behaves like
-   * dynamically growing array together with
-   * the class ArrayListIterator which is random access iterator as needed
-   * by the stl for sorting and other algorithms.
-   * @author Markus Blatt
-   */
-  /**
-   * @addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * @brief A memory pool of objects.
-   *
-   * The memory for the objects is organized in chunks.
-   * Each chunks is capable of holding a specified number of
-   * objects. The allocated objects will be properly aligned
-   * for fast access.
-   * Deallocated objects are cached for reuse to prevent memory
-   * fragmentation.
-   * @warning If the size of the objects allocated is less than the
-   * size of a pointer memory is wasted.
-   * @warning Due to aligned issues at the number of bytes of the
-   * alignment prerequisite (< 4 bytes) are wasted. This effect
-   * becomes negligable for big sizes of chunkSize.
-   *
-   * \tparam T The type that is allocated by us.
-   * \tparam s The size of a memory chunk in bytes.
-   */
-  template<class T, std::size_t s>
-  class Pool
-  {
-    friend int ::testPool<s,T>();
-
-    //friend std::ostream& std::operator<<<>(std::ostream&,Pool<T,s>&);
-    template< class, std::size_t > friend class PoolAllocator;
-
-  private:
-
-    /** @brief Reference to next free element. */
-    struct Reference
-    {
-      Reference *next_;
-    };
-
-  public:
-
-    /** @brief The type of object we allocate memory for. */
-    typedef T MemberType;
-    enum
-    {
-
-      /**
-       * @brief The size of a union of Reference and MemberType.
-       */
-      unionSize = ((sizeof(MemberType) < sizeof(Reference)) ?
-                   sizeof(Reference) : sizeof(MemberType)),
-
-      /**
-       * @brief Size requirement. At least one object has to
-       * stored.
-       */
-      size = ((sizeof(MemberType) <= s && sizeof(Reference) <= s) ?
-              s : unionSize),
-
-      /**
-       * @brief The alignment that suits both the MemberType and
-       * the Reference (i.e. their least common multiple).
-       */
-      alignment = Lcm<AlignmentOf<MemberType>::value,AlignmentOf<Reference>::value>::value,
-
-      /**
-       * @brief The aligned size of the type.
-       *
-       * This size is bigger than sizeof of the type and a multiple of
-       * the alignment requirement.
-       */
-      alignedSize = ((unionSize % alignment == 0) ?
-                     unionSize :
-                     ((unionSize / alignment + 1) * alignment)),
-
-      /**
-       * @brief The size of each chunk memory chunk.
-       *
-       * Will be adapted to be a multiple of the alignment plus
-       * an offset to handle the case that the pointer to the memory
-       * does not satisfy the alignment requirements.
-       */
-      chunkSize = ((size % alignment == 0) ?
-                   size : ((size / alignment + 1)* alignment))
-                  + alignment - 1,
-
-      /**
-       * @brief The number of element each chunk can hold.
-       */
-      elements = ((chunkSize - alignment + 1)/ alignedSize)
-    };
-
-  private:
-    /** @brief Chunk of memory managed by the pool. */
-    struct Chunk
-    {
-
-      //friend int testPool<s,T>();
-
-      /** @brief The memory we hold. */
-      char chunk_[chunkSize];
-
-      /**
-       * @brief Adress the first properly aligned
-       * position in the chunk.
-       */
-      char* memory_;
-
-      /** @brief The next element */
-      Chunk *next_;
-
-      /**
-       * @brief Constructor.
-       */
-      Chunk()
-      {
-        // Make sure the alignment is correct!
-        // long long should be 64bit safe!
-        unsigned long long lmemory = reinterpret_cast<unsigned long long>(chunk_);
-        if(lmemory % alignment != 0)
-          lmemory = (lmemory / alignment + 1)
-                    * alignment;
-
-        memory_ = reinterpret_cast<char *>(lmemory);
-      }
-    };
-
-  public:
-    /** @brief Constructor. */
-    inline Pool();
-    /** @brief Destructor. */
-    inline ~Pool();
-    /**
-     * @brief Get a new or recycled object
-     * @return A pointer to the object memory.
-     */
-    inline T *allocate();
-    /**
-     * @brief Free an object.
-     * @param o The pointer to memory block of the object.
-     */
-    inline void free(void* o);
-
-    /**
-     * @brief Print elements in pool for debugging.
-     */
-    inline void print(std::ostream& os);
-
-  private:
-
-    // Prevent Copying!
-    Pool(const Pool<MemberType,s>&);
-
-    void operator=(const Pool<MemberType,s>& pool) const;
-    /** @brief Grow our pool.*/
-    inline void grow();
-    /** @brief The first free element. */
-    Reference *head_;
-    /** @brief Our memory chunks. */
-    Chunk *chunks_;
-    /* @brief The number of currently allocated elements. */
-    //size_t allocated_;
-
-  };
-
-  /**
-   * @brief An allocator managing a pool of objects for reuse.
-   *
-   * This allocator is specifically useful for small data types
-   * where new and delete are too expensive.
-   *
-   * It uses a pool of memory chunks where the objects will be allocated.
-   * This means that assuming that N objects fit into memory only every N-th
-   * request for an object will result in memory allocation.
-   *
-   * @warning It is not suitable
-   * for the use in standard containers as it cannot allocate
-   * arrays of arbitrary size
-   *
-   * \tparam T The type that will be allocated.
-   * \tparam s The number of elements to fit into one memory chunk.
-   */
-  template<class T, std::size_t s>
-  class PoolAllocator
-  {
-    //friend std::ostream& std::operator<<<>(std::ostream&,PoolAllocator<T,s>&);
-
-  public:
-    /**
-     * @brief Type of the values we construct and allocate.
-     */
-    typedef T value_type;
-
-    enum
-    {
-      /**
-       * @brief The number of objects to fit into one memory chunk
-       * allocated.
-       */
-      size=s*sizeof(value_type)
-    };
-
-    /**
-     * @brief The pointer type.
-     */
-    typedef T* pointer;
-
-    /**
-     * @brief The constant pointer type.
-     */
-    typedef const T* const_pointer;
-
-    /**
-     * @brief The reference type.
-     */
-    typedef T& reference;
-
-    /**
-     * @brief The constant reference type.
-     */
-    typedef const T& const_reference;
-
-    /**
-     * @brief The size type.
-     */
-    typedef std::size_t size_type;
-
-    /**
-     * @brief The difference_type.
-     */
-    typedef std::ptrdiff_t difference_type;
-
-    /**
-     * @brief Constructor.
-     */
-    inline PoolAllocator();
-
-    /**
-     * @brief Coopy Constructor.
-     */
-    template<typename U, std::size_t u>
-    inline PoolAllocator(const PoolAllocator<U,u>&)
-    {}
-
-    /**
-     * @brief Allocates objects.
-     * @param n The number of objects to allocate. Has to be less
-     * than Pool<T,s>::elements!
-     * @param hint Ignored hint.
-     * @return A pointer tp the allocated elements.
-     */
-    inline pointer allocate(size_t n, const_pointer hint=0);
-
-    /**
-     * @brief Free objects.
-     *
-     * Does not call the contructor!
-     * @param n The number of object to free. Has to be one!
-     * @param p Pointer to the first object.
-     */
-    inline void deallocate(pointer p, std::size_t n);
-
-    /**
-     * @brief Construct an object.
-     * @param p Pointer to the object.
-     * @param value The value to initialize it to.
-     */
-    inline void construct(pointer p, const_reference value);
-
-    /**
-     * @brief Destroy an object without freeing memory.
-     * @param p Pointer to the object.
-     */
-    inline void destroy(pointer p);
-
-    /**
-     * @brief Convert a reference to a pointer.
-     */
-    inline pointer  address(reference x) const { return &x; }
-
-
-    /**
-     * @brief Convert a reference to a pointer.
-     */
-    inline const_pointer address(const_reference x) const { return &x; }
-
-    /**
-     * @brief Not correctly implemented, yet!
-     */
-    inline int max_size() const throw(){ return 1;}
-
-    /**
-     * @brief Rebind the allocator to another type.
-     */
-    template<class U>
-    struct rebind
-    {
-      typedef PoolAllocator<U,s> other;
-    };
-
-    /** @brief The type of the memory pool we use. */
-    typedef Pool<T,size> PoolType;
-
-  private:
-    /**
-     * @brief The underlying memory pool.
-     */
-    static PoolType memoryPool_;
-  };
-
-  // specialization for void
-  template <std::size_t s>
-  class PoolAllocator<void,s>
-  {
-  public:
-    typedef void*       pointer;
-    typedef const void* const_pointer;
-    // reference to void members are impossible.
-    typedef void value_type;
-    template <class U> struct rebind
-    {
-      typedef PoolAllocator<U,s> other;
-    };
-
-    template<typename T, std::size_t t>
-    PoolAllocator(const PoolAllocator<T,t>&)
-    {}
-
-  };
-
-
-  template<typename T1, std::size_t t1, typename T2, std::size_t t2>
-  bool operator==(const PoolAllocator<T1,t1>&, const PoolAllocator<T2,t2>&)
-  {
-    return false;
-  }
-
-
-  template<typename T1, std::size_t t1, typename T2, std::size_t t2>
-  bool operator!=(const PoolAllocator<T1,t1>&, const PoolAllocator<T2,t2>&)
-  {
-    return true;
-  }
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator==(const PoolAllocator<T,t1>&, const PoolAllocator<T,t2>&)
-  {
-    return Pool<T,t1>::chunkSize == Pool<T,t2>::chunkSize;
-  }
-
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator!=(const PoolAllocator<T,t1>&, const PoolAllocator<T,t2>&)
-  {
-    return Pool<T,t1>::chunkSize != Pool<T,t2>::chunkSize;
-  }
-
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator==(const PoolAllocator<T,t1>&, const PoolAllocator<void,t2>&)
-  {
-    return false;
-  }
-
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator!=(const PoolAllocator<T,t1>&, const PoolAllocator<void,t2>&)
-  {
-    return true;
-  }
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator==(const PoolAllocator<void,t1>&, const PoolAllocator<T,t2>&)
-  {
-    return false;
-  }
-
-
-  template<typename T, std::size_t t1, std::size_t t2>
-  bool operator!=(const PoolAllocator<void,t1>&, const PoolAllocator<T,t2>&)
-  {
-    return true;
-  }
-  template<std::size_t t1, std::size_t t2>
-  bool operator==(const PoolAllocator<void,t1>&, const PoolAllocator<void,t2>&)
-  {
-    return true;
-  }
-
-  template<std::size_t t1, std::size_t t2>
-  bool operator!=(const PoolAllocator<void,t1>&, const PoolAllocator<void,t2>&)
-  {
-    return false;
-  }
-
-  template<class T, std::size_t S>
-  inline Pool<T,S>::Pool()
-    : head_(0), chunks_(0) //, allocated_(0)
-  {
-    dune_static_assert(sizeof(T)<=unionSize, "Library Error: type T is too big");
-    dune_static_assert(sizeof(Reference)<=unionSize, "Library Error: type of referene is too big");
-    dune_static_assert(unionSize<=alignedSize, "Library Error: alignedSize too small");
-    dune_static_assert(sizeof(T)<=chunkSize, "Library Error: chunkSize must be able to hold at least one value");
-    dune_static_assert(sizeof(Reference)<=chunkSize, "Library Error: chunkSize must be able to hold at least one reference");
-    dune_static_assert((chunkSize - (alignment - 1)) % alignment == 0, "Library Error: compiler cannot calculate!");
-    dune_static_assert(elements>=1, "Library Error: we need to hold at least one element!");
-    dune_static_assert(elements*alignedSize<=chunkSize, "Library Error: aligned elements must fit into chuck!");
-    /*std::cout<<"s= "<<S<<" : T: "<<sizeof(T)<<" Reference: "<<sizeof(Reference)<<" union: "<<unionSize<<" alignment: "<<alignment<<
-       "aligned: "<<alignedSize<<" chunk: "<< chunkSize<<" elements: "<<elements<<std::endl;*/
-  }
-
-  template<class T, std::size_t S>
-  inline Pool<T,S>::~Pool()
-  {
-    /*
-       if(allocated_!=0)
-       std::cerr<<"There are still "<<allocated_<<" allocated elements by the Pool<"<<typeid(T).name()<<","<<S<<"> "
-               <<static_cast<void*>(this)<<"! This is a memory leak and might result in segfaults"
-               <<std::endl;
-     */
-    // delete the allocated chunks.
-    Chunk *current=chunks_;
-
-    while(current!=0)
-    {
-      Chunk *tmp = current;
-      current = current->next_;
-      delete tmp;
-    }
-  }
-
-  template<class T, std::size_t S>
-  inline void Pool<T,S>::print(std::ostream& os)
-  {
-    Chunk* current=chunks_;
-    while(current) {
-      os<<current<<" ";
-      current=current->next_;
-    }
-    os<<current<<" ";
-  }
-
-  template<class T, std::size_t S>
-  inline void Pool<T,S>::grow()
-  {
-    Chunk *newChunk = new Chunk;
-    newChunk->next_ = chunks_;
-    chunks_ = newChunk;
-
-    char* start = reinterpret_cast<char *>(chunks_->memory_);
-    char* last  = &start[(elements-1)*alignedSize];
-
-    for(char* element=start; element<last; element=element+alignedSize) {
-      reinterpret_cast<Reference*>(element)->next_
-        = reinterpret_cast<Reference*>(element+alignedSize);
-    }
-
-    reinterpret_cast<Reference*>(last)->next_=0;
-    head_ = reinterpret_cast<Reference*>(start);
-  }
-
-  template<class T, std::size_t S>
-  inline void Pool<T,S>::free(void* b)
-  {
-    if(b) {
-      Reference* freed = reinterpret_cast<Reference*>(b);
-      freed->next_ = head_;
-      head_ = freed;
-      //--allocated_;
-    }else
-      std::cerr<< "Tried to free null pointer! "<<b<<std::endl;
-  }
-
-  template<class T, std::size_t S>
-  inline T* Pool<T,S>::allocate()
-  {
-    if(!head_)
-      grow();
-
-    Reference* p = head_;
-    head_ = p->next_;
-    //++allocated_;
-    return reinterpret_cast<T*>(p);
-  }
-
-  template<class T, std::size_t s>
-  typename PoolAllocator<T,s>::PoolType PoolAllocator<T,s>::memoryPool_;
-
-  template<class T, std::size_t s>
-  inline PoolAllocator<T,s>::PoolAllocator()
-  { }
-
-  template<class T, std::size_t s>
-  inline T* PoolAllocator<T,s>::allocate(std::size_t n, const T* hint)
-  {
-    assert(n==1); //<=(Pool<T,s>::elements));
-    return memoryPool_.allocate();
-  }
-
-  template<class T, std::size_t s>
-  inline void PoolAllocator<T,s>::deallocate(T* p, std::size_t n)
-  {
-    for(size_t i=0; i<n; i++)
-      memoryPool_.free(p++);
-  }
-
-  template<class T, std::size_t s>
-  inline void PoolAllocator<T,s>::construct(T* p, const T& value)
-  {
-    ::new (static_cast<void*>(p))T(value);
-  }
-
-  template<class T, std::size_t s>
-  inline void PoolAllocator<T,s>::destroy(T* p)
-  {
-    p->~T();
-  }
-
-  /** @} */
-}
-#endif
diff --git a/common/precision.hh b/common/precision.hh
deleted file mode 100644
index 3bdd830f2..000000000
--- a/common/precision.hh
+++ /dev/null
@@ -1,75 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_PRECISION_HH
-#define DUNE_PRECISION_HH
-
-#include <stdlib.h>
-
-namespace Dune {
-
-  /**
-      @addtogroup DenseMatVec
-      @{
-   */
-
-  /**
-   * @brief Precisions for calculations with FieldMatrix and FieldVector.
-   */
-  template <class ctype = double>
-  class FMatrixPrecision {
-  public:
-    //! return threshold to do pivoting
-    static ctype pivoting_limit ()
-    {
-      return _pivoting;
-    }
-
-    //! set pivoting threshold
-    static void set_pivoting_limit (ctype pivthres)
-    {
-      _pivoting = pivthres;
-    }
-
-    //! return threshold to declare matrix singular
-    static ctype singular_limit ()
-    {
-      return _singular;
-    }
-
-    //! set singular threshold
-    static void set_singular_limit (ctype singthres)
-    {
-      _singular = singthres;
-    }
-
-    //! return threshold to declare matrix singular
-    static ctype absolute_limit ()
-    {
-      return _absolute;
-    }
-
-    //! set singular threshold
-    static void set_absolute_limit (ctype absthres)
-    {
-      _absolute = absthres;
-    }
-
-  private:
-    // just to demonstrate some state information
-    static ctype _pivoting;
-    static ctype _singular;
-    static ctype _absolute;
-  };
-
-  template <class ctype>
-  ctype FMatrixPrecision<ctype>::_pivoting = 1E-8;
-  template <class ctype>
-  ctype FMatrixPrecision<ctype>::_singular = 1E-14;
-  template <class ctype>
-  ctype FMatrixPrecision<ctype>::_absolute = 1E-80;
-
-  /** @} end documentation */
-
-} // end namespace
-
-#endif
diff --git a/common/propertymap.hh b/common/propertymap.hh
deleted file mode 100644
index 166362cb5..000000000
--- a/common/propertymap.hh
+++ /dev/null
@@ -1,336 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_PROPERTYMAP_HH
-#define DUNE_PROPERTYMAP_HH
-
-#include <cstddef>
-#include <iterator>
-
-#include "static_assert.hh"
-#include "typetraits.hh"
-
-namespace Dune
-{
-
-  template<class PM>
-  struct PropertyMapTraits
-  {
-    /**
-     * @brief The type of the key of the property map.
-     */
-    typedef typename PM::KeyType KeyType;
-    /**
-     * @brief The type of the values of the property map.
-     */
-    typedef typename PM::ValueType ValueType;
-    /**
-     * @brief The type of the reference to the values.
-     */
-    typedef typename PM::Reference Reference;
-    /**
-     * @brief The category the property map belongs to.
-     */
-    typedef typename PM::Category Category;
-  };
-
-  /** @brief Tag for the category of readable property maps. */
-  struct ReadablePropertyMapTag
-  {};
-
-  /** @brief Tag for the category of writable property maps. */
-  struct WritablePropertyMapTag
-  {};
-
-  /**
-   * @brief Tag for the category of readable and writable property
-   * maps.
-   */
-  struct ReadWritePropertyMapTag
-    : public ReadablePropertyMapTag, public WritablePropertyMapTag
-  {};
-
-  /**
-   * @brief Tag for the category of lvalue property maps.
-   */
-  struct LvaluePropertyMapTag
-    : public ReadWritePropertyMapTag
-  {};
-
-  template<class T>
-  struct PropertyMapTraits<T*>
-  {
-    typedef T ValueType;
-    typedef ValueType& Reference;
-    typedef std::ptrdiff_t KeyType;
-    typedef LvaluePropertyMapTag Category;
-  };
-
-
-  template<class T>
-  struct PropertyMapTraits<const T*>
-  {
-    typedef T ValueType;
-    typedef const ValueType& Reference;
-    typedef std::ptrdiff_t KeyTyoe;
-    typedef LvaluePropertyMapTag Category;
-  };
-
-  template<class Reference, class PropertyMap>
-  struct RAPropertyMapHelper
-  {};
-
-  template<class Reference, class PropertyMap, class Key>
-  inline Reference
-  get(const RAPropertyMapHelper<Reference,PropertyMap>& pmap,
-      const Key& key)
-  {
-    return static_cast<const PropertyMap&>(pmap)[key];
-  }
-
-  template<class Reference, class PropertyMap, class Key, class Value>
-  inline void
-  put(const RAPropertyMapHelper<Reference,PropertyMap>& pmap,
-      const Key& key, const Value& value)
-  {
-    dune_static_assert((Conversion<typename PropertyMap::Category,WritablePropertyMapTag>
-                        ::exists), "WritablePropertyMapTag required!");
-    static_cast<const PropertyMap&>(pmap)[key] = value;
-  }
-
-  /**
-   * @brief Adapter to turn a random access iteratorinto a properties map.
-   */
-  template<class RAI, class IM,
-      class T = typename std::iterator_traits<RAI>::value_type,
-      class R = typename std::iterator_traits<RAI>::reference>
-  class IteratorPropertyMap
-    : public RAPropertyMapHelper<R,IteratorPropertyMap<RAI,IM,T,R> >
-  {
-  public:
-    /**
-     * @brief The type of the random access iterator.
-     */
-    typedef RAI RandomAccessIterator;
-
-    /**
-     * @brief The type of the index map.
-     *
-     * This will convert the KeyType to std::ptrdiff_t via operator[]().
-     */
-    typedef IM IndexMap;
-
-    /**
-     * @brief The key type of the property map.
-     */
-    typedef typename IndexMap::KeyType KeyType;
-
-    /**
-     * @brief The value type of the property map.
-     */
-    typedef T ValueType;
-
-    /**
-     * @brief The reference type of the property map.
-     */
-    typedef R Reference;
-
-    /**
-     * @brief The category of this property map.
-     */
-    typedef LvaluePropertyMapTag Category;
-
-    /**
-     * @brief Constructor.
-     * @param iter The random access iterator that
-     * provides the mapping.
-     * @param im The index map that maps the KeyType
-     * to the difference_type of the iterator.
-     */
-    inline IteratorPropertyMap(RandomAccessIterator iter,
-                               const IndexMap& im=IndexMap())
-      : iter_(iter), indexMap_(im)
-    {}
-
-    /** @brief Constructor. */
-    inline IteratorPropertyMap()
-      : iter_(), indexMap_()
-    {}
-
-    /** @brief Access the a value by reference. */
-    inline Reference operator[](KeyType key) const
-    {
-      return *(iter_ + get(indexMap_, key));
-    }
-
-  private:
-    /** @brief The underlying iterator. */
-    RandomAccessIterator iter_;
-    /** @brief The index map to use for the lookup. */
-    IndexMap indexMap_;
-  };
-
-  /**
-   * @brief An adaptor to turn an unique associative container
-   * into a property map.
-   */
-  template<typename T>
-  class AssociativePropertyMap
-    : RAPropertyMapHelper<typename T::value_type::second_type&,
-          AssociativePropertyMap<T> >
-  {
-    /**
-     * @brief The type of the unique associative container.
-     */
-    typedef T UniqueAssociativeContainer;
-
-    /**
-     * @brief The key type of the property map.
-     */
-    typedef typename UniqueAssociativeContainer::value_type::first_type
-    KeyType;
-
-    /**
-     * @brief The value type of the property map.
-     */
-    typedef typename UniqueAssociativeContainer::value_type::second_type
-    ValueType;
-
-    /**
-     * @brief The reference type of the property map.
-     */
-    typedef ValueType& Reference;
-
-    /**
-     * @brief The category of the property map.
-     */
-    typedef LvaluePropertyMapTag Category;
-
-    /** @brief Constructor */
-    inline AssociativePropertyMap()
-      : map_(0)
-    {}
-
-    /** @brief Constructor. */
-    inline AssociativePropertyMap(UniqueAssociativeContainer& map)
-      : map_(&map)
-    {}
-
-    /**
-     * @brief Access a property.
-     * @param key The key of the property.
-     */
-    inline Reference operator[](KeyType key) const
-    {
-      return map_->find(key)->second;
-    }
-  private:
-    UniqueAssociativeContainer* map_;
-  };
-
-  /**
-   * @brief An adaptor to turn an unique associative container
-   * into a property map.
-   */
-  template<typename T>
-  class ConstAssociativePropertyMap
-    : RAPropertyMapHelper<const typename T::value_type::second_type&,
-          ConstAssociativePropertyMap<T> >
-  {
-    /**
-     * @brief The type of the unique associative container.
-     */
-    typedef T UniqueAssociativeContainer;
-
-    /**
-     * @brief The key type of the property map.
-     */
-    typedef typename UniqueAssociativeContainer::value_type::first_type
-    KeyType;
-
-    /**
-     * @brief The value type of the property map.
-     */
-    typedef typename UniqueAssociativeContainer::value_type::second_type
-    ValueType;
-
-    /**
-     * @brief The reference type of the property map.
-     */
-    typedef const ValueType& Reference;
-
-    /**
-     * @brief The category of the property map.
-     */
-    typedef LvaluePropertyMapTag Category;
-
-    /** @brief Constructor */
-    inline ConstAssociativePropertyMap()
-      : map_(0)
-    {}
-
-    /** @brief Constructor. */
-    inline ConstAssociativePropertyMap(const UniqueAssociativeContainer& map)
-      : map_(&map)
-    {}
-
-    /**
-     * @brief Access a property.
-     * @param key The key of the property.
-     */
-    inline Reference operator[](KeyType key) const
-    {
-      return map_->find(key)->second;
-    }
-  private:
-    const UniqueAssociativeContainer* map_;
-  };
-
-  /**
-   * @brief A property map that applies the identy function to integers.
-   */
-  struct IdentityMap
-    : public RAPropertyMapHelper<std::size_t, IdentityMap>
-  {
-    /** @brief The key type of the map. */
-    typedef std::size_t KeyType;
-
-    /** @brief The value type of the map. */
-    typedef std::size_t ValueType;
-
-    /** @brief The reference type of the map. */
-    typedef std::size_t Reference;
-
-    /** @brief The category of the map. */
-    typedef ReadablePropertyMapTag Category;
-
-    inline ValueType operator[](const KeyType& key) const
-    {
-      return key;
-    }
-  };
-
-
-  /**
-   * @brief Selector for the property map type.
-   *
-   * If present the the type of the property map
-   * is accessible via the typedef Type.
-   */
-  template<typename T, typename C>
-  struct PropertyMapTypeSelector
-  {
-    /**
-     * @brief the tag idetifying the property.
-     */
-    typedef T Tag;
-    /**
-     * @brief The container type to whose entries the properties
-     * are attached.
-     */
-    typedef C Container;
-  };
-
-}
-
-#endif
diff --git a/common/singleton.hh b/common/singleton.hh
deleted file mode 100644
index 0af1ab61a..000000000
--- a/common/singleton.hh
+++ /dev/null
@@ -1,121 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_SINGLETON_HH
-#define DUNE_SINGLETON_HH
-/**
- * @file
- * @brief Usefull wrapper for creating singletons.
- *
- * Inspirated by the article
- * <a href="http://www.codeguru.com/cpp/cpp/cpp_mfc/singletons/article.php/c755/">CodeGuru: A Leak-Free Singleton class</a>
- */
-namespace Dune
-{
-  /**
-   * @brief An adapter to turn a class into a singleton.
-   *
-   * The class represented by the template parameter T must
-   * have a parameterless constructor.
-   *
-   * Class T can be publically
-   * derived from Singleton<T>:
-   *
-   * \code
-   * #include<dune/common/singleton.hh>
-   * class Foo : public Dune::Singleton<Foo>
-   * {
-   * public:
-   *   Foo()
-   *   {
-   *     bytes = new char[1000];
-   *   }
-   *
-   *   ~Foo()
-   *   {
-   *     delete[] bytes;
-   *   }
-   * private:
-   *   char* bytes;
-   * };
-   * \endcode
-   *
-   * Or one can construct a Singleton of an existing class. Say Foo1 is a class
-   * with parameterless constructor then
-   * \code
-   * typedef Dune::Singleton<Foo1> FooSingleton;
-   * Foo1 instance& = FooSingleton::instance();
-   * \endcode
-   * Creates a singleton of that class and accesses its instance.
-   */
-  template<class T>
-  class Singleton
-  {
-  public:
-    /**
-     * @brief A simple smart pointer responsible for creation
-     * and deletion of the instance.
-     */
-    class InstancePointer
-    {
-    public:
-      /** @brief Construct a null pointer. */
-      InstancePointer() : pointer_(0)
-      {}
-      /** @brief Delete the instance we point to. */
-      ~InstancePointer()
-      {
-        if(pointer_ != 0)
-          delete pointer_;
-      }
-      /**
-       * @brief Get a pointer to the instance.
-       * @return The instance we store.
-       */
-      T* get()
-      {
-        return pointer_;
-      }
-      /**
-       * @brief Set the pointer.
-       * @param pointer A pointer to the instance.
-       */
-      void set(T* pointer)
-      {
-        if(pointer != 0) {
-          delete pointer_;
-          pointer_ = pointer;
-        }
-      }
-    private:
-      T* pointer_;
-    };
-  private:
-    /** @brief Smartpointer to the instance. */
-    static InstancePointer instance_;
-  protected:
-    /* @brief Private constructor. */
-    Singleton(){}
-    /** @brief Private copy constructor. */
-    Singleton(const Singleton&){}
-    /** @brief Private assignment operator. */
-    Singleton& operator=(const Singleton&){}
-
-  public:
-    /**
-     * @brief Get the instance of the singleton.
-     * @return The instance of the singleton.
-     */
-    static T& instance()
-    {
-      if(instance_.get() == 0)
-        instance_.set(new T());
-      return *instance_.get();
-    }
-  };
-
-  template<class T>
-  typename Singleton<T>::InstancePointer Singleton<T>::instance_;
-
-} // namespace Dune
-
-#endif
diff --git a/common/sllist.hh b/common/sllist.hh
deleted file mode 100644
index a3ffd4c89..000000000
--- a/common/sllist.hh
+++ /dev/null
@@ -1,811 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE__SLLIST_HH
-#define DUNE__SLLIST_HH
-
-#include <memory>
-#include <cassert>
-#include "iteratorfacades.hh"
-#include <ostream>
-
-namespace Dune
-{
-  /**
-   * @addtogroup Common
-   *
-   * @{
-   */
-  /**
-   * @file
-   * \brief This file implements a single linked list together with
-   * the necessary iterators.
-   * @author Markus Blatt
-   */
-  template<typename T, class A>
-  class SLListIterator;
-
-  template<typename T, class A>
-  class SLListConstIterator;
-
-  template<typename T, class A>
-  class SLListModifyIterator;
-
-  /**
-   * @brief A single linked list.
-   *
-   * The list is capable of insertions at the front and at
-   * the end and of removing elements at the front. Those
-   * operations require constant time.
-   */
-  template<typename T, class A=std::allocator<T> >
-  class SLList
-  {
-    class Element;
-    friend class SLListIterator<T,A>;
-    friend class SLListConstIterator<T,A>;
-
-  public:
-
-    /**
-     * @brief The size type.
-     */
-    typedef typename A::size_type size_type;
-
-    /**
-     * @brief The type we store.
-     */
-    typedef T MemberType;
-
-    /**
-     * @brief The allocator to use.
-     */
-    typedef typename A::template rebind<Element>::other Allocator;
-
-    /**
-     * @brief The mutable iterator of the list.
-     */
-    typedef SLListIterator<T,A> iterator;
-
-    /**
-     * @brief The mutable iterator of the list.
-     */
-    typedef SLListConstIterator<T,A> const_iterator;
-
-    /**
-     * @brief Constructor.
-     */
-    SLList();
-
-    /**
-     * @brief Copy constructor with type conversion.
-     */
-    template<typename T1, typename A1>
-    SLList(const SLList<T1,A1>& other);
-
-    /**
-     * @brief Copy constructor.
-     */
-    SLList(const SLList<T,A>& other);
-
-    /**
-     * @brief Destructor.
-     *
-     * Deallocates all elements in the list.
-     */
-    ~SLList();
-
-    /**
-     * @brief The type of the iterator capable of deletion
-     * and insertion.
-     */
-    typedef SLListModifyIterator<T,A> ModifyIterator;
-
-    /**
-     * @brief Assignment operator.
-     */
-    SLList<T,A>& operator=(const SLList<T,A>& other);
-
-
-    /**
-     * @brief Add a new entry to the end of the list.
-     * @param item The item to add.
-     */
-    inline void push_back(const MemberType& item);
-
-    /**
-     * @brief Add a new entry to the beginning of the list.
-     * @param item The item to add.
-     */
-    inline void push_front(const MemberType& item);
-
-    /**
-     * @brief Remove the first item in the list.
-     */
-    inline void pop_front();
-
-    /** @brief Remove all elements from the list. */
-    inline void clear();
-
-    /**
-     * @brief Get an iterator pointing to the first
-     * element in the list.
-     *
-     * @return An iterator pointing to the first
-     * element or the end if the list is empty.
-     */
-    inline iterator begin();
-
-    /**
-     * @brief Get an iterator pointing to the first
-     * element in the list.
-     *
-     * @return An iterator pointing to the first
-     * element or the end if the list is empty.
-     */
-    inline const_iterator begin() const;
-
-    /**
-     * @brief Get an iterator capable of deleting and
-     * inserting elements.
-     *
-     * @return Modifying iterator positioned at the beginning
-     * of the list.
-     */
-    inline ModifyIterator beginModify();
-
-    /**
-     * @brief Get an iterator capable of deleting and
-     * inserting elements.
-     *
-     * @return Modifying iterator positioned after the end
-     * of the list.
-     */
-    inline ModifyIterator endModify();
-
-    /**
-     * @brief Get an iterator pointing to the
-     * end of the list.
-     *
-     * @return An iterator pointing to the end.
-     */
-    inline iterator end();
-
-    /**
-     * @brief Get an iterator pointing to the
-     * end of the list.
-     *
-     * @return An iterator pointing to the end.
-     */
-    inline const_iterator end() const;
-
-    /**
-     * @brief Check whether the list is empty.
-     *
-     * @return True if the list is empty;
-     */
-    inline bool empty() const;
-
-    /**
-     * @brief Get the number of elements the list
-     * contains.
-     */
-    inline int size() const;
-
-    bool operator==(const SLList& sl) const;
-
-
-    bool operator!=(const SLList& sl) const;
-
-  private:
-    /** \todo Please doc me! */
-    struct Element
-    {
-      /**
-       * @brief The next element in the list.
-       */
-      Element* next_;
-      /**
-       * @brief The element we hold.
-       */
-      MemberType item_;
-
-      Element(const MemberType& item);
-
-      Element();
-
-    };
-
-    /**
-     * @brief Delete the next element in the list.
-     * @param current Element whose next element should be deleted.
-     */
-    void deleteNext(Element* current);
-
-    /**
-     * @brief Copy the elements from another list.
-     * @param other The other list.
-     */
-    void copyElements(const SLList<T,A>& other);
-
-    /**
-     * @brief Delete the next element in the list.
-     *
-     * If the template parameter watchForTail is true, it is checked whether
-     * the deleted element is the tail and therefore the tail must be updated.
-     * @param current Element whose next element should be deleted.
-     */
-    template<bool watchForTail>
-    void deleteNext(Element* current);
-    /**
-     * @brief Insert an element after another one in the list.
-     * @param current The element after which we insert.
-     * @param item The item to insert.
-     */
-    void insertAfter(Element* current, const T& item);
-
-    /** @brief Pseudo element before the first entry. */
-    Element beforeHead_;
-
-    /**
-     * @brief Pointer to he last element in the list.
-     *
-     * If list is empty this will point to beforeHead_
-     */
-    Element* tail_;
-
-    /** @brief The allocator we use. */
-    Allocator allocator_;
-
-    /** brief The number of elements the list holds. */
-    int size_;
-  };
-
-  /**
-   * @brief A mutable iterator for the SLList.
-   */
-  template<typename T, class A>
-  class SLListIterator : public Dune::ForwardIteratorFacade<SLListIterator<T,A>, T, T&, std::size_t>
-  {
-    friend class SLListConstIterator<T,A>;
-    friend class SLListModifyIterator<T,A>;
-    friend class SLList<T,A>;
-
-  public:
-    inline SLListIterator(typename SLList<T,A>::Element* item,
-                          SLList<T,A>* sllist)
-      : current_(item), list_(sllist)
-    {}
-
-    inline SLListIterator()
-      : current_(0), list_(0)
-    {}
-
-    inline SLListIterator(const SLListModifyIterator<T,A>& other)
-      : current_(other.iterator_.current_), list_(other.iterator_.list_)
-    {}
-
-    /**
-     * @brief Dereferencing function for the iterator facade.
-     * @return A reference to the element at the current position.
-     */
-    inline T& dereference() const
-    {
-      return current_->item_;
-    }
-
-    /**
-     * @brief Equality test for the iterator facade.
-     * @param other The other iterator to check.
-     * @return true If the other iterator is at the same position.
-     */
-    inline bool equals(const SLListConstIterator<T,A>& other) const
-    {
-      return current_==other.current_;
-    }
-
-    /**
-     * @brief Equality test for the iterator facade.
-     * @param other The other iterator to check.
-     * @return true If the other iterator is at the same position.
-     */
-    inline bool equals(const SLListIterator<T,A>& other) const
-    {
-      return current_==other.current_;
-    }
-
-    /**
-     * @brief Equality test for the iterator facade.
-     * @param other The other iterator to check.
-     * @return true If the other iterator is at the same position.
-     */
-    inline bool equals(const SLListModifyIterator<T,A>& other) const
-    {
-      return current_==other.iterator_.current_;
-    }
-
-    /**
-     * @brief Increment function for the iterator facade.
-     */
-    inline void increment()
-    {
-      current_ = current_->next_;
-    }
-
-    /**
-     * @brief Insert an element in the underlying list after
-     * the current position.
-     * @param v The value to insert.
-     */
-    inline void insertAfter(const T& v) const
-    {
-      assert(list_ );
-      list_->insertAfter(current_, v);
-    }
-
-    /**
-     * @brief Delete the entry after the current position.
-     *
-     * @warning This will invalidate all iterators positioned at the delete position! Use with care!
-     */
-    inline void deleteNext() const
-    {
-      assert(list_);
-      list_->deleteNext(current_);
-    }
-
-  private:
-    /**  @brief The current element. */
-    typename SLList<T,A>::Element* current_;
-    /** @brief The list we iterate over. */
-    SLList<T,A>* list_;
-  };
-
-  /**
-   * @brief A constant iterator for the SLList.
-   */
-  template<class T, class A>
-  class SLListConstIterator : public Dune::ForwardIteratorFacade<SLListConstIterator<T,A>, const T, const T&, std::size_t>
-  {
-    friend class SLListIterator<T,A>;
-    friend class SLList<T,A>;
-
-  public:
-    inline SLListConstIterator()
-      : current_(0)
-    {}
-
-    inline SLListConstIterator(typename SLList<T,A>::Element* item)
-      : current_(item)
-    {}
-
-    inline SLListConstIterator(const SLListIterator<T,A>& other)
-      : current_(other.current_)
-    {}
-
-    inline SLListConstIterator(const SLListConstIterator<T,A>& other)
-      : current_(other.current_)
-    {}
-
-    inline SLListConstIterator(const SLListModifyIterator<T,A>& other)
-      : current_(other.iterator_.current_)
-    {}
-
-    /**
-     * @brief Dereferencing function for the facade.
-     * @return A reference to the element at the current position.
-     */
-    inline const T& dereference() const
-    {
-      return current_->item_;
-    }
-
-    /**
-     * @brief Equality test for the iterator facade.
-     * @param other The other iterator to check.
-     * @return true If the other iterator is at the same position.
-     */
-    inline bool equals(const SLListConstIterator<T,A>& other) const
-    {
-      return current_==other.current_;
-    }
-
-    /**
-     * @brief Increment function for the iterator facade.
-     */
-    inline void increment()
-    {
-      current_ = current_->next_;
-    }
-
-  private:
-    /**  @brief The current element. */
-    typename SLList<T,A>::Element* current_;
-  };
-
-  /**
-   * @brief A mutable iterator for the SLList.
-   */
-  template<typename T, class A>
-  class SLListModifyIterator : public Dune::ForwardIteratorFacade<SLListModifyIterator<T,A>, T, T&, std::size_t>
-  {
-    friend class SLListConstIterator<T,A>;
-    friend class SLListIterator<T,A>;
-  public:
-    inline SLListModifyIterator(SLListIterator<T,A> beforeIterator,
-                                SLListIterator<T,A> _iterator)
-      : beforeIterator_(beforeIterator), iterator_(_iterator)
-    {}
-
-    inline SLListModifyIterator(const SLListModifyIterator<T,A>& other)
-      : beforeIterator_(other.beforeIterator_), iterator_(other.iterator_)
-    {}
-
-    inline SLListModifyIterator()
-      : beforeIterator_(), iterator_()
-    {}
-
-    /**
-     * @brief Dereferencing function for the iterator facade.
-     * @return A reference to the element at the current position.
-     */
-    inline T& dereference() const
-    {
-      return *iterator_;
-    }
-
-    /**
-     * @brief Test whether another iterator is equal.
-     * @return true if the other iterator is at the same position as
-     * this one.
-     */
-    inline bool equals(const SLListConstIterator<T,A>& other) const
-    {
-      return iterator_== other;
-    }
-
-
-    /**
-     * @brief Test whether another iterator is equal.
-     * @return true if the other iterator is at the same position as
-     * this one.
-     */
-    inline bool equals(const SLListIterator<T,A>& other) const
-    {
-      return iterator_== other;
-    }
-
-
-    /**
-     * @brief Test whether another iterator is equal.
-     * @return true if the other iterator is at the same position as
-     * this one.
-     */
-    inline bool equals(const SLListModifyIterator<T,A>& other) const
-    {
-      return iterator_== other.iterator_;
-    }
-
-    /**
-     * @brief Increment function for the iterator facade.
-     */
-    inline void increment()
-    {
-      ++iterator_;
-      ++beforeIterator_;
-    }
-
-    /**
-     * @brief Insert an element at the current position.
-     *
-     * Starting from the element at the current position all
-     * elements will be shifted by one position to the back.
-     * The iterator will point to the same element as before
-     * after the insertion, i.e the number of increments to
-     * reach the same position from a begin iterator increases
-     * by one.
-     * This means the inserted element is the one before the one
-     * the iterator points to.
-     * @param v The value to insert.
-     */
-    inline void insert(const T& v)
-    {
-      beforeIterator_.insertAfter(v);
-      ++beforeIterator_;
-    }
-
-    /**
-     * @brief Delete the entry at the current position.
-     *
-     * The iterator will be positioned at the next postion after the
-     * deletion
-     * @warning This will invalidate all iterators positioned at the delete position! Use with care!
-     */
-    inline void remove()
-    {
-      ++iterator_;
-      beforeIterator_.deleteNext();
-    }
-
-  private:
-    /** @brief Iterator positioned at the position before the current. */
-    SLListIterator<T,A> beforeIterator_;
-    /** @brief Iterator positioned at the current position. */
-    SLListIterator<T,A> iterator_;
-  };
-} // namespace Dune
-
-namespace std
-{
-
-  template<typename T, typename A>
-  ostream& operator<<(ostream& os, const Dune::SLList<T,A> sllist)
-  {
-    typedef typename Dune::SLList<T,A>::const_iterator Iterator;
-    Iterator end = sllist.end();
-    Iterator current= sllist.begin();
-
-    os << "{ ";
-
-    if(current!=end) {
-      os<<*current<<" ("<<static_cast<const void*>(&(*current))<<")";
-      ++current;
-
-      for(; current != end; ++current)
-        os<<", "<<*current<<" ("<<static_cast<const void*>(&(*current))<<")";
-    }
-    os<<"} ";
-    return os;
-  }
-} //namespace std
-
-namespace Dune
-{
-
-  template<typename T, class A>
-  SLList<T,A>::Element::Element(const T& item)
-    : next_(0), item_(item)
-  {}
-
-  template<typename T, class A>
-  SLList<T,A>::Element::Element()
-    : next_(0), item_()
-  {}
-
-  template<typename T, class A>
-  SLList<T,A>::SLList()
-    : beforeHead_(), tail_(&beforeHead_), allocator_(), size_(0)
-  {
-    beforeHead_.next_=0;
-    assert(&beforeHead_==tail_);
-    assert(tail_->next_==0);
-  }
-
-  template<typename T, class A>
-  SLList<T,A>::SLList(const SLList<T,A>& other)
-    : beforeHead_(), tail_(&beforeHead_), allocator_(), size_(0)
-  {
-    copyElements(other);
-  }
-
-  template<typename T, class A>
-  template<typename T1, class A1>
-  SLList<T,A>::SLList(const SLList<T1,A1>& other)
-    : beforeHead_(), tail_(&beforeHead_), allocator_(), size_(0)
-  {
-    copyElements(other);
-  }
-
-  template<typename T, typename A>
-  void SLList<T,A>::copyElements(const SLList<T,A>& other)
-  {
-    assert(tail_==&beforeHead_);
-    assert(size_==0);
-    typedef typename SLList<T,A>::const_iterator Iterator;
-    Iterator iend = other.end();
-    for(Iterator element=other.begin(); element != iend; ++element)
-      push_back(*element);
-
-    assert(other.size()==size());
-  }
-
-  template<typename T, class A>
-  SLList<T,A>::~SLList()
-  {
-    clear();
-  }
-
-  template<typename T, class A>
-  bool SLList<T,A>::operator==(const SLList& other) const
-  {
-    if(size!=other.size())
-      return false;
-    for(const_iterator iter=begin(), oiter=other.begin();
-        iter != end(); ++iter, ++oiter)
-      if(*iter!=*oiter)
-        return false;
-    return true;
-  }
-
-  template<typename T, class A>
-  bool SLList<T,A>::operator!=(const SLList& other) const
-  {
-    if(size()==other.size()) {
-      for(const_iterator iter=begin(), oiter=other.begin();
-          iter != end(); ++iter, ++oiter)
-        if(*iter!=*oiter)
-          return true;
-      return false;
-    }else
-      return true;
-  }
-  template<typename T, class A>
-  SLList<T,A>& SLList<T,A>::operator=(const SLList<T,A>& other)
-  {
-    clear();
-    copyElements(other);
-    return *this;
-  }
-
-  template<typename T, class A>
-  inline void SLList<T,A>::push_back(const T& item)
-  {
-    assert(size_>0 || tail_==&beforeHead_);
-    tail_->next_ = allocator_.allocate(1, 0);
-    assert(size_>0 || tail_==&beforeHead_);
-    tail_ = tail_->next_;
-    ::new (static_cast<void*>(&(tail_->item_)))T(item);
-    tail_->next_=0;
-    assert(tail_->next_==0);
-    ++size_;
-  }
-
-  template<typename T, class A>
-  inline void SLList<T,A>::insertAfter(Element* current, const T& item)
-  {
-    assert(current);
-
-#ifndef NDEBUG
-    bool changeTail = (current == tail_);
-#endif
-
-    // Save old next element
-    Element* tmp = current->next_;
-
-    assert(!changeTail || !tmp);
-
-    // Allocate space
-    current->next_ = allocator_.allocate(1, 0);
-
-    // Use copy constructor to initialize memory
-    ::new(static_cast<void*>(&(current->next_->item_)))T(item);
-
-    // Set next element
-    current->next_->next_=tmp;
-
-    if(!current->next_->next_) {
-      // Update tail
-      assert(changeTail);
-      tail_ = current->next_;
-    }
-    ++size_;
-    assert(!tail_->next_);
-  }
-
-  template<typename T, class A>
-  inline void SLList<T,A>::push_front(const T& item)
-  {
-    if(tail_ == &beforeHead_) {
-      // list was empty
-      beforeHead_.next_ = tail_ = allocator_.allocate(1, 0);
-      ::new(static_cast<void*>(&beforeHead_.next_->item_))T(item);
-      beforeHead_.next_->next_=0;
-    }else{
-      Element* added = allocator_.allocate(1, 0);
-      ::new(static_cast<void*>(&added->item_))T(item);
-      added->next_=beforeHead_.next_;
-      beforeHead_.next_=added;
-    }
-    assert(tail_->next_==0);
-    ++size_;
-  }
-
-
-  template<typename T, class A>
-  inline void SLList<T,A>::deleteNext(Element* current)
-  {
-    this->template deleteNext<true>(current);
-  }
-
-  template<typename T, class A>
-  template<bool watchForTail>
-  inline void SLList<T,A>::deleteNext(Element* current)
-  {
-    assert(current->next_);
-    Element* next = current->next_;
-
-    if(watchForTail)
-      if(next == tail_) {
-        // deleting last element changes tail!
-        tail_ = current;
-      }
-
-    current->next_ = next->next_;
-    next->item_.~T();
-    next->next_ = 0;
-    allocator_.deallocate(next, 1);
-    --size_;
-    assert(!watchForTail || &beforeHead_ != tail_ || size_==0);
-  }
-
-  template<typename T, class A>
-  inline void SLList<T,A>::pop_front()
-  {
-    deleteNext(&beforeHead_);
-  }
-
-  template<typename T, class A>
-  inline void SLList<T,A>::clear()
-  {
-    while(beforeHead_.next_ ) {
-      this->template deleteNext<false>(&beforeHead_);
-    }
-
-    assert(size_==0);
-    // update the tail!
-    tail_ = &beforeHead_;
-  }
-
-  template<typename T, class A>
-  inline bool SLList<T,A>::empty() const
-  {
-    return  (&beforeHead_ == tail_);
-  }
-
-  template<typename T, class A>
-  inline int SLList<T,A>::size() const
-  {
-    return size_;
-  }
-
-  template<typename T, class A>
-  inline SLListIterator<T,A> SLList<T,A>::begin()
-  {
-    return iterator(beforeHead_.next_, this);
-  }
-
-  template<typename T, class A>
-  inline SLListConstIterator<T,A> SLList<T,A>::begin() const
-  {
-    return const_iterator(beforeHead_.next_);
-  }
-
-  template<typename T, class A>
-  inline SLListIterator<T,A> SLList<T,A>::end()
-  {
-    return iterator();
-  }
-
-  template<typename T, class A>
-  inline SLListModifyIterator<T,A> SLList<T,A>::endModify()
-  {
-    return SLListModifyIterator<T,A>(iterator(tail_, this),iterator());
-  }
-
-
-  template<typename T, class A>
-  inline SLListModifyIterator<T,A> SLList<T,A>::beginModify()
-  {
-    return SLListModifyIterator<T,A>(iterator(&beforeHead_, this),
-                                     iterator(beforeHead_.next_, this));
-  }
-
-  template<typename T, class A>
-  inline SLListConstIterator<T,A> SLList<T,A>::end() const
-  {
-    return const_iterator();
-  }
-
-  /** }@ */
-}
-#endif
diff --git a/common/smallobject.hh b/common/smallobject.hh
deleted file mode 100644
index 2b34260b2..000000000
--- a/common/smallobject.hh
+++ /dev/null
@@ -1,111 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_SMALLOBJECT_HH
-#define DUNE_SMALLOBJECT_HH
-
-#include <cassert>
-#include <new>
-
-namespace Dune
-{
-
-  // SmallObjectPool
-  // ---------------
-
-  class SmallObjectPool
-  {
-    union Block
-    {
-      Block *next;
-      unsigned int blocks;
-    };
-
-  public:
-    enum { blockSize = sizeof( Block ) };
-    enum { maxBlocks = (1 << 10) - 1 };
-    enum { maxSize = maxBlocks * blockSize };
-
-  private:
-    Block *list_[ maxBlocks ];
-
-    SmallObjectPool ()
-    {
-      for( unsigned int i = 0; i < maxBlocks; ++i )
-        list_[ i ] = 0;
-    }
-
-    ~SmallObjectPool ()
-    {
-      for( unsigned int i = 0; i < maxBlocks; ++i )
-      {
-        for( Block *next = list_[ i ]; next != 0; )
-        {
-          Block *current = next;
-          next = current->next;
-          delete[] current;
-        }
-      }
-    }
-
-    static SmallObjectPool &instance ()
-    {
-      static SmallObjectPool inst;
-      return inst;
-    }
-
-    static Block *&list ( unsigned int blocks )
-    {
-      assert( blocks < maxBlocks );
-      return instance().list_[ blocks ];
-    }
-
-  public:
-    static void *allocate ( unsigned int size )
-    {
-      const unsigned int blocks = (size + (blockSize-1)) / blockSize;
-      if( blocks >= maxBlocks )
-        return 0;
-      Block *&next = list( blocks );
-      Block *current = next;
-      if( current != 0 )
-        next = current->next;
-      else
-        current = new Block[ blocks+1 ];
-      current->blocks = blocks;
-      return current + 1;
-    }
-
-    static void free ( void *ptr )
-    {
-      if( ptr != 0 )
-      {
-        Block *current = reinterpret_cast< Block * >( ptr ) - 1;
-        const unsigned int blocks = current->blocks;
-        Block *&next = list( blocks );
-        current->next = next;
-        next = current;
-      }
-    }
-  };
-
-
-
-  // SmallObject
-  // -----------
-
-  struct SmallObject
-  {
-    void *operator new ( size_t size )
-    {
-      return SmallObjectPool :: allocate( size );
-    }
-
-    void operator delete ( void *ptr )
-    {
-      SmallObjectPool :: free( ptr );
-    }
-  };
-
-}
-
-#endif
diff --git a/common/smartpointer.hh b/common/smartpointer.hh
deleted file mode 100644
index 79fe420c3..000000000
--- a/common/smartpointer.hh
+++ /dev/null
@@ -1,177 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_SMARTPOINTER_HH
-#define DUNE_SMARTPOINTER_HH
-#include <iostream>
-
-/**
- * @file
- * @brief This file implements the class SmartPointer which is a reference counting
- * pointer.
- * @author Markus Blatt
- */
-namespace Dune
-{
-  /** @addtogroup Common
-   *
-   * @{
-   */
-  /**
-   * @brief A reference counting smart pointer.
-   *
-   * It is designed such that it is usable within a std::vector.
-   * The contained object is destroyed only if there are no more
-   * references to it.
-   */
-  template<class T>
-  class SmartPointer
-  {
-  public:
-    /**
-     * @brief The data type we are a pointer for.
-     *
-     * This has to have a parameterless constructor.
-     */
-    typedef T MemberType;
-
-    /**
-     * @brief Constructs a new smart pointer and allocates the referenced Object.
-     */
-    inline SmartPointer();
-
-    /**
-     * @brief Constructs a new smart pointer from a preallocated Object.
-     *
-     * note: the object must be allocated on the heap and after handing the pointer to
-     * SmartPointer the ownership of the pointer is also handed to the SmartPointer.
-     */
-    inline SmartPointer(T * pointer);
-
-    /**
-     * @brief Copy constructor.
-     * @param pointer The object to copy.
-     */
-    inline SmartPointer(const SmartPointer<T>& pointer);
-
-    /**
-     * @brief Destructor.
-     */
-    inline ~SmartPointer();
-
-    /** \brief Assignment operator */
-    inline SmartPointer& operator=(const SmartPointer<T>& pointer);
-
-    /** \brief Dereference as object */
-    inline MemberType& operator*();
-
-    /** \brief Dereference as pointer */
-    inline MemberType* operator->();
-
-    /** \brief Dereference as const object */
-    inline const MemberType& operator*() const;
-
-    /** \brief Dereference as const pointer */
-    inline const MemberType* operator->() const;
-
-    /**
-     * @brief Deallocates the references object if no other
-     * pointers reference it.
-     */
-    inline void deallocate();
-    int count() const;
-  private:
-    /** @brief The object we reference. */
-    class PointerRep
-    {
-      friend class SmartPointer<MemberType>;
-      /** @brief The number of references. */
-      int count_;
-      /** @brief The representative. */
-      MemberType * rep_;
-      /** @brief Default Constructor. */
-      PointerRep() : count_(1), rep_(new MemberType) {}
-      /** @brief Constructor from existing Pointer. */
-      PointerRep(MemberType * p) : count_(1), rep_(p) {}
-      /** @brief Destructor, deletes MemberType* rep_. */
-      ~PointerRep() { delete rep_; }
-    } *rep_;
-  };
-
-  template<class T>
-  inline SmartPointer<T>::SmartPointer(T * p)
-  {
-    rep_ = new PointerRep(p);
-  }
-
-  template<class T>
-  inline SmartPointer<T>::SmartPointer()
-  {
-    rep_ = new PointerRep;
-  }
-
-  template<class T>
-  inline SmartPointer<T>::SmartPointer(const SmartPointer<T>& other) : rep_(other.rep_)
-  {
-    ++(rep_->count_);
-  }
-
-  template<class T>
-  inline SmartPointer<T>& SmartPointer<T>::operator=(const SmartPointer<T>& other)
-  {
-    (other.rep_->count_)++;
-    if(rep_!=0 && --(rep_->count_)<=0) delete rep_;
-    rep_ = other.rep_;
-    return *this;
-  }
-
-  template<class T>
-  inline SmartPointer<T>::~SmartPointer()
-  {
-    if(rep_!=0 && --(rep_->count_)==0) {
-      delete rep_;
-      rep_=0;
-    }
-  }
-
-  template<class T>
-  inline T& SmartPointer<T>::operator*()
-  {
-    return *(rep_->rep_);
-  }
-
-  template<class T>
-  inline T *SmartPointer<T>::operator->()
-  {
-    return rep_->rep_;
-  }
-
-  template<class T>
-  inline const T& SmartPointer<T>::operator*() const
-  {
-    return *(rep_->rep_);
-  }
-
-  template<class T>
-  inline const T *SmartPointer<T>::operator->() const
-  {
-    return rep_->rep_;
-  }
-
-  template<class T>
-  inline int SmartPointer<T>::count() const
-  {
-    return rep_->count_;
-  }
-
-  template<class T>
-  inline void SmartPointer<T>::deallocate()
-  {
-    assert(rep_!=0 && rep_->count_==1);
-    delete rep_;
-    rep_=0;
-  }
-  /** @} */
-}
-#endif
diff --git a/common/static_assert.hh b/common/static_assert.hh
deleted file mode 100644
index dd1b64b01..000000000
--- a/common/static_assert.hh
+++ /dev/null
@@ -1,109 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_STATIC_ASSERT_HH
-#define DUNE_STATIC_ASSERT_HH
-
-#include "deprecated.hh"
-
-/**
- * @addtogroup Common
- *
- * @{
- */
-
-/**
-    \brief (DEPRECATED) Helper template so that compilation fails if condition is not true.
-
-    \deprecated Use dune_static_assert instead.
-
-    If the condition is true a static function yes is available, othewise the
-    only function available is no().
-
-    Example for compile time check whether two types are the same:
-    \code
-    IsTrue<is_same<int,int>::value>::yes(); //
-    IsTrue<is_same<bool,int>::value>::yes(); // false, will trigger a compile time error
-    \endcode
-
-    A test that trigger a compile time error if condition is true:
-    \code
-    IsTrue<condition>::no()
-    \endcode
- */
-template <bool condition>
-struct IsTrue
-{
-  static void no() DUNE_DEPRECATED {};
-};
-
-template <>
-struct IsTrue<true>
-{
-  static void yes() DUNE_DEPRECATED {};
-};
-
-#if not HAVE_STATIC_ASSERT
-// Taken from BOOST
-//
-// Helper macro CPPMAGIC_JOIN:
-// The following piece of macro magic joins the two
-// arguments together, even when one of the arguments is
-// itself a macro (see 16.3.1 in C++ standard).  The key
-// is that macro expansion of macro arguments does not
-// occur in CPPMAGIC_DO_JOIN2 but does in CPPMAGIC_DO_JOIN.
-//
-#define CPPMAGIC_JOIN( X, Y ) CPPMAGIC_DO_JOIN( X, Y )
-#define CPPMAGIC_DO_JOIN( X, Y ) CPPMAGIC_DO_JOIN2(X,Y)
-#define CPPMAGIC_DO_JOIN2( X, Y ) X ## Y
-
-template <bool x> struct static_assert_failure;
-
-template <> struct static_assert_failure<true> { };
-
-template<int x> struct static_assert_test {};
-#endif
-
-/**
-    \brief Helper template so that compilation fails if condition is not true.
-
-    \code
-   #include <dune/common/static_assert.hh>
-    dune_static_assert(CONDITION, ERRORMSG);
-    \endcode
-
-    If CONDITION is not true, dune_static_assert fails.
-
-    If the C++0x language feature static_assert is available, dune_static_assert
-    should break down static_assert. Otherwise dune_static_assert implements a
-    test that trigger a compile time error if condition is false.
-
-    Example:
-
-    \code
-    dune_static_assert(1<=2, "error");
-    dune_static_assert((is_same<int,int>::value),  "error msg");
-    dune_static_assert((is_same<bool,int>::value), "error msg"); // false, will trigger a compile time error
-    \endcode
-
-    Be aware that...
-    <ol>
-    <li>dune_static_assert is not in the namespace Dune</li>
-    <li>you must use extra parentheses if your condition contains ','.
-    This is because dune_static_assert is a preprocessor macro</li>
-    </ol>
-
- */
-
-#if HAVE_STATIC_ASSERT
-#define dune_static_assert(COND,MSG) \
-  static_assert(COND,MSG)
-#else
-#define dune_static_assert(COND,MSG) \
-  typedef static_assert_test<                         \
-    sizeof(static_assert_failure< (bool)( COND )>)\
-    > CPPMAGIC_JOIN (dune_static_assert_typedef_, __LINE__)
-#endif
-
-/* @} */
-
-#endif
diff --git a/common/stdstreams.cc b/common/stdstreams.cc
deleted file mode 100644
index f1f050abb..000000000
--- a/common/stdstreams.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "stdstreams.hh"
-
-namespace Dune {
-
-  /*
-
-     The standard debug streams declared in stdstreams.hh exist in this
-     file so that they can be compiled into libdune
-
-   */
-
-  /* stream for very verbose output: information on the lowest
-     level. This is expected to report insane amounts of
-     information. Use of the activation-flag to only generate output
-     near the problem is recommended */
-  DVVerbType dvverb(std::cout);
-
-  /* stream for verbose output: information that helps to trace in
-     more detail what the modules do */
-  DVerbType dverb(std::cout);
-
-  /* stream for informative output: summary infos on what a module
-     does, runtimes, etc. */
-  DInfoType dinfo(std::cout);
-
-  /* stream for warnings: messages which may indicate problems */
-  DWarnType dwarn(std::cerr);
-
-  /* stream for strong warnings: when a failure */
-  DGraveType dgrave(std::cerr);
-
-  /* stream for error messages: only packages integrating Dune
-     completely will redirect it. The output of derr is independant on
-     the debug-level, only the activation-flag is checked */
-  DErrType derr(std::cerr);
-
-}
diff --git a/common/stdstreams.hh b/common/stdstreams.hh
deleted file mode 100644
index 7a8f04d84..000000000
--- a/common/stdstreams.hh
+++ /dev/null
@@ -1,172 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-/*
-
-   Declaration of standard Dune-library streams
-
- */
-
-#ifndef DUNE_COMMON_STDSTREAMS_HH
-#define DUNE_COMMON_STDSTREAMS_HH
-
-#include "debugstream.hh"
-
-namespace Dune {
-
-  /*!
-     \addtogroup DebugOut
-     @{
-
-     standard debug streams with level below MINIMAL_DEBUG_LEVEL will
-     collapse to doing nothing if output is requested.
-
-     MINIMAL_DEBUG_LEVEL is set to DUNE_MINIMAL_DEBUG_LEVEL, wich is
-     defined in config.h and can be changed by the configure option
-     @code --with-minimal-debug-level=[grave|warn|info|verb|vverb] @endcode
-
-     For a Dune-Release this should be set to at least 4 so that only
-     important messages are active. Dune-developers may adapt this
-     setting to their debugging needs locally
-
-     Keep in mind that libdune has to be recompiled if this value is changed!
-
-
-
-     The singleton instances of the available debug streams can befound in
-     the \ref DebugOut "Standard Debug Streams" module
-   */
-
-  /*! \file
-
-     The standard debug streams are compiled into libdune to exist
-     globally. This file declares the stream types and the global debug
-     level.
-
-   */
-  /*! @} */
-  /*!
-     \defgroup StdStreams Standard Debug Streams
-     \ingroup DebugOut
-     @{
-
-     Dune defines several standard output streams for the library
-     routines.
-
-     Applications may control the standard streams via the attach/detach,
-     push/pop interface but should define an independent set of streams (see \ref DebugAppl )
-
-   */
-
-  /**
-   * @brief The default minimum debug level.
-   *
-   * If the  level of a stream is bigger than this value
-   * it will be activated.
-   */
-  #ifndef DUNE_MINIMAL_DEBUG_LEVEL
-  #define DUNE_MINIMAL_DEBUG_LEVEL 4
-  #endif
-  static const DebugLevel MINIMAL_DEBUG_LEVEL = DUNE_MINIMAL_DEBUG_LEVEL;
-
-  /**
-   * @brief The level of the very verbose debug stream.
-   * @see dvverb
-   */
-  static const DebugLevel VERY_VERBOSE_DEBUG_LEVEL = 1;
-
-  /**
-      @brief Type of very verbose debug stream.
-      @see dvverb
-   */
-  typedef DebugStream<VERY_VERBOSE_DEBUG_LEVEL, MINIMAL_DEBUG_LEVEL> DVVerbType;
-
-  /*!
-     \brief stream for very verbose output.
-
-     Information on the lowest
-     level. This is expected to report insane amounts of
-     information. Use of the activation-flag to only generate output
-     near the problem is recommended.
-   */
-  extern DVVerbType dvverb;
-
-  /**
-   * @brief The level of the verbose debug stream.
-   * @see dvverb
-   */
-  static const DebugLevel VERBOSE_DEBUG_LEVEL = 2;
-
-  /**
-      @brief Type of more verbose debug stream.
-      @see dverb
-   */
-  typedef DebugStream<VERBOSE_DEBUG_LEVEL, MINIMAL_DEBUG_LEVEL> DVerbType;
-
-  /** @brief Singleton of verbose debug stream. */
-  extern DVerbType dverb;
-
-  /**
-   * @brief The level of the informative debug stream.
-   * @see dinfo
-   */
-  static const DebugLevel INFO_DEBUG_LEVEL = 3;
-
-  /**
-      @brief Type of debug stream with info level.
-      @see dinfo
-   */
-  typedef DebugStream<INFO_DEBUG_LEVEL, MINIMAL_DEBUG_LEVEL> DInfoType;
-
-  /**
-      @brief Stream for informative output.
-
-      Summary infos on what a module
-      does, runtimes, etc.
-   */
-  extern DInfoType dinfo;
-
-  /**
-   * @brief The level of the debug stream for warnings.
-   * @see dwarn
-   */
-  static const DebugLevel WARN_DEBUG_LEVEL = 4;
-
-  /**
-      @brief Type of debug stream with warn level.
-      @see dwarn
-   */
-  typedef DebugStream<WARN_DEBUG_LEVEL, MINIMAL_DEBUG_LEVEL> DWarnType;
-
-  /** @brief Stream for warnings indicating problems. */
-  extern DWarnType dwarn;
-
-  /**
-   * @brief The level of the debug stream for fatal errors.
-   * @see dgrave
-   */
-  static const DebugLevel GRAVE_DEBUG_LEVEL = 5;
-
-  /** @brief Type of debug stream for fatal errors.*/
-  typedef DebugStream<GRAVE_DEBUG_LEVEL, MINIMAL_DEBUG_LEVEL> DGraveType;
-
-  /**  @brief Stream for warnings indicating fatal errors.*/
-  extern DGraveType dgrave;
-
-  /** @brief The type of the stream used for error messages. */
-  typedef DebugStream<1> DErrType;
-
-  /*!
-     @brief Stream for error messages.
-
-     Only packages integrating Dune
-     completely will redirect it. The output of derr is independant on
-     the debug-level, only the activation-flag is checked.
-   */
-  extern DErrType derr;
-
-  //! }@
-}
-
-#endif
diff --git a/common/test/.gitignore b/common/test/.gitignore
deleted file mode 100644
index c33eb0244..000000000
--- a/common/test/.gitignore
+++ /dev/null
@@ -1,48 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-semantic.cache
-fvectortest
-mpicollcomm
-lrutest
-parsetest
-test-stack
-arraylisttest
-smartpointertest
-float_cmp
-bitsetvectortest
-iteratorfacadetest
-sllisttest
-tuplestest
-settest
-fmatrixtest
-poolallocatortest
-*.gcda
-*.gcno
-gmon.out
-gcdlcmtest
-streamtest
-exprtmpl
-timing_xpr
-timing_old
-timing_flt
-bigunsignedinttest
-mpihelpertest
-singletontest
-utilitytest
-testfassign_fail1
-testfassign_fail2
-testfassign_fail3
-testfassign_fail4
-testfassign_fail5
-testfassign_fail6
-testfassign1
-testfassign2
-testfassign3
-testfassign4
-smallobject
-conversiontest
-nullptr-test
-blockbitfieldtest
-deprecatedtuplestest
diff --git a/common/test/Makefile.am b/common/test/Makefile.am
deleted file mode 100644
index cbb824ef7..000000000
--- a/common/test/Makefile.am
+++ /dev/null
@@ -1,138 +0,0 @@
-# -*- tab-width: 4; indent-tabs-mode: nil -*-
-# $Id$
-
-TESTPROGS = parsetest test-stack arraylisttest smartpointertest \
-	sllisttest iteratorfacadetest tuplestest fvectortest fmatrixtest \
-	poolallocatortest settest gcdlcmtest streamtest \
-	bigunsignedinttest mpihelpertest singletontest mpicollcomm \
-	utilitytest lrutest \
-	smallobject nullptr-test \
-	testfassign1 testfassign2 testfassign3 \
-	testfassign4 \
-    testfassign_fail1 testfassign_fail2 testfassign_fail3 \
-    testfassign_fail4 testfassign_fail5 testfassign_fail6 \
-    conversiontest bitsetvectortest deprecatedtuplestest \
-    float_cmp
-
-# which tests to run
-COMPILE_XFAIL=$(DUNE_COMMON_ROOT)/bin/xfail-compile-tests
-
-COMPILE_XFAIL_TESTS = nullptr-test-fail static_assert_test
-
-compile_XFAIL:
-	for i in $(COMPILE_XFAIL_TESTS); do \
-	  if $(MAKE) $$i; then \
-	    echo "ERROR: target $$i did compile, although it is listed in the COMPILE_XFAIL_TESTS"; \
-	    exit 1; \
-	  else true; \
-	  fi; \
-	done
-
-EXTRA_PROGRAMS = $(COMPILE_XFAIL_TESTS)
-
-TESTS = $(TESTPROGS) $(COMPILE_XFAIL)
-
-XFAIL_TESTS = testfassign_fail1 testfassign_fail2 testfassign_fail3 \
-    testfassign_fail4 testfassign_fail5 testfassign_fail6
-
-# programs just to build when "make check" is used
-check_PROGRAMS = $(TESTPROGS)
-
-AM_LDFLAGS = $(LOCAL_LIBS)
-
-# define the programs
-smallobject_SOURCES = smallobject.cc
-
-bitsetvectortest_SOURCES = bitsetvectortest.cc
-
-nullptr_test_SOURCES = nullptr-test.cc nullptr-test2.cc
-nullptr_test_fail_SOURCES = nullptr-test.cc
-nullptr_test_fail_CPPFLAGS = -DFAIL
-
-static_assert_test_SOURCES = static_assert_test.cc
-
-bigunsignedinttest_SOURCES=bigunsignedinttest.cc
-
-parsetest_SOURCES = parsetest.cc
-
-lrutest_SOURCES = lrutest.cc
-
-sllisttest_SOURCES = sllisttest.cc
-
-test_stack_SOURCES = test-stack.cc
-
-arraylisttest_SOURCES = arraylisttest.cc
-
-smartpointertest_SOURCES = smartpointertest.cc
-
-tuplestest_SOURCES = tuplestest.cc
-
-deprecatedtuplestest_SOURCES = deprtuplestest.cc
-
-streamtest_SOURCES = streamtest.cc
-
-# mention headers so that they are distributed too
-iteratorfacadetest_SOURCES = iteratorfacadetest.cc iteratorfacadetest.hh \
-   iteratortest.hh
-
-fvectortest_SOURCES = fvectortest.cc
-
-fmatrixtest_SOURCES = fmatrixtest.cc
-
-poolallocatortest_SOURCES = poolallocatortest.cc
-
-settest_SOURCES=settest.cc
-
-gcdlcmtest_SOURCES = gcdlcmtest.cc
-
-mpihelpertest_SOURCES = mpihelpertest.cc
-mpihelpertest_CXXFLAGS = $(MPI_CPPFLAGS)
-mpihelpertest_LDFLAGS = $(LOCAL_LIBS) $(MPI_LDFLAGS) $(MPI_LIBS)
-
-mpicollcomm_SOURCES = mpicollectivecommunication.cc
-mpicollcomm_CXXFLAGS = $(MPI_CPPFLAGS)
-mpicollcomm_LDFLAGS = $(LOCAL_LIBS) $(MPI_LDFLAGS) $(MPI_LIBS)
-
-singletontest_SOURCES = singletontest.cc
-singletontest_LDFLAGS = $(LOCAL_LIBS)
-
-utilitytest_SOURCES = utilitytest.cc
-utilitytest_LDFLAGS = $(LOCAL_LIBS)
-
-testfassign1_SOURCES = testfassign.cc testfassign2.cc
-testfassign1_CPPFLAGS = $(AM_CPPFLAGS) -D_N=3 -D_VALUES="1,2,3"
-
-testfassign2_SOURCES = testfassign.cc
-testfassign2_CPPFLAGS = $(AM_CPPFLAGS) -D_N=3 -D_VALUES="1,zero"
-
-testfassign3_SOURCES = testfassign.cc
-testfassign3_CPPFLAGS = $(AM_CPPFLAGS) -D_N=3 -D_VALUES="zero"
-
-testfassign4_SOURCES = testfassign.cc
-testfassign4_CPPFLAGS = $(AM_CPPFLAGS) -D_N=2 -D_M=3 -D_VALUES="1, zero, nextRow, 2, 3, 4"
-
-testfassign_fail1_SOURCES = testfassign.cc
-testfassign_fail1_CPPFLAGS = $(AM_CPPFLAGS) -D_N=3 -D_VALUES="1,2"
-
-testfassign_fail2_SOURCES = testfassign.cc
-testfassign_fail2_CPPFLAGS = $(AM_CPPFLAGS) -D_N=3 -D_VALUES="1,2,3,4"
-
-testfassign_fail3_SOURCES = testfassign.cc
-testfassign_fail3_CPPFLAGS = $(AM_CPPFLAGS) -D_N=2 -D_M=2 -D_VALUES="1, nextRow, 2, 3"
-
-testfassign_fail4_SOURCES = testfassign.cc
-testfassign_fail4_CPPFLAGS = $(AM_CPPFLAGS) -D_N=2 -D_M=2 -D_VALUES="1, 2, 3, nextRow, 2, 3"
-
-testfassign_fail5_SOURCES = testfassign.cc
-testfassign_fail5_CPPFLAGS = $(AM_CPPFLAGS) -D_N=2 -D_M=2 -D_VALUES="1, 2"
-
-testfassign_fail6_SOURCES = testfassign.cc
-testfassign_fail6_CPPFLAGS = $(AM_CPPFLAGS) -D_N=2 -D_M=2 -D_VALUES="1, 2, nextRow, 2, 3, nextRow, 4, 5"
-
-conversiontest_SOURCES = conversiontest.cc
-
-sourcescheck_NOSOURCES = exprtmpl.cc timing.cc
-
-float_cmp_SOURCES = float_cmp.cc
-
-include $(top_srcdir)/am/global-rules
diff --git a/common/test/arraylisttest.cc b/common/test/arraylisttest.cc
deleted file mode 100644
index 9010605df..000000000
--- a/common/test/arraylisttest.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/arraylist.hh>
-#include <dune/common/test/iteratortest.hh>
-#include <iostream>
-#include <cstdlib>
-#include <algorithm>
-
-class Double {
-public:
-  double val;
-  Double() : val(0){}
-  Double(double d) : val(d){}
-  Double& operator=(double d){
-    val=d;
-    return *this;
-  }
-};
-
-bool operator<(Double a, Double b){
-  return a.val<b.val;
-}
-
-template<class T, int size>
-void randomizeList(Dune::ArrayList<T,size>& alist){
-  using namespace Dune;
-
-  srand(300);
-
-  int lowest=0, highest=1000, range=(highest-lowest)+1;
-
-  for(int i=0; i < 250; i++)
-    alist.push_back(T(static_cast<int>(range*(rand()/(RAND_MAX+1.0)))));
-}
-
-int testSorting(){
-  using namespace Dune;
-  ArrayList<double,10> alist;
-
-  randomizeList(alist);
-  std::sort(alist.begin(), alist.end());
-  double last=-1;
-
-  for(ArrayList<double,10>::iterator iter=alist.begin(), end=alist.end();
-      iter != end; ++iter) {
-    if((*iter)>=last) {
-      last=*iter;
-    }else{
-      std::cerr << last<<">"<<(*iter)<<" List is not sorted! "<<__FILE__ <<":"<<__LINE__<<std::endl;
-      return 1;
-    }
-  }
-
-  return 0;
-}
-
-template<int size>
-void initConsecutive(Dune::ArrayList<double,size>& alist){
-  using namespace Dune;
-
-  for(int i=0; i < 100; i++)
-    alist.push_back(i);
-}
-
-int testIteratorRemove(){
-  using namespace Dune;
-  ArrayList<double,10> alist;
-  initConsecutive(alist);
-  ArrayList<double,10>::iterator iter=alist.begin();
-
-  iter+=8;
-
-  iter.eraseToHere();
-  ++iter;
-
-  if((*iter)!=10) {
-    std::cerr<<"Removing from iterator failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-
-  iter = alist.begin();
-
-  if((*iter)!=9) {
-    std::cerr<<"Removing from iterator failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-
-  iter +=3;
-  iter.eraseToHere();
-  iter +=4;
-
-  if((*iter)!=17) {
-    std::cerr<<"Removing from iterator failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-
-  alist.purge();
-  if(*(alist.begin())!=13) {
-    std::cerr<<"Purging iterator failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-  return 0;
-}
-int testRandomAccess(){
-  using namespace Dune;
-  ArrayList<double,10> alist;
-  initConsecutive(alist);
-
-  ArrayList<double,10>::iterator iter=alist.begin();
-
-
-  for(int i=0; i < 100; i++) {
-    if(iter[i]!=i) {
-      std::cerr << "Random Access failed: "<<iter[i]<<"!="<<i<<" "<< __FILE__ <<":"<<__LINE__<<std::endl;
-      return 1;
-    }
-
-    if(*(iter+i)!=i) {
-      std::cerr << "Random Access failed "<< __FILE__ <<":"<<__LINE__<<std::endl;
-      return 1;
-    }
-  }
-  return 0;
-}
-
-int testComparison(){
-  using namespace Dune;
-  ArrayList<double,10> alist;
-  initConsecutive(alist);
-
-  ArrayList<double,10>::iterator iter=alist.begin(), iter1=alist.begin();
-  iter1=iter+5;
-  iter1=iter-5;
-  iter1=iter+5;
-
-
-  if(!(iter<iter1)) {
-    std::cerr<<*iter<<">="<<*iter1<<" Operator< seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-
-  if(!(iter1>iter)) {
-    std::cerr<<"operator> seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-
-  if(!(iter<=iter1)) {
-    std::cerr<<"operator<= seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-
-  if(!(iter1>=iter)) {
-    std::cerr<<"operator>= seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-
-  if(!(iter1 != iter)) {
-    std::cerr<<"operator!= seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-
-  if(!(iter1 == iter+5)) {
-    std::cerr<<"operator== seems to be wrong! "<< __FILE__ <<__LINE__<<std::endl;
-    return 1;
-  }
-  return 0;
-}
-
-
-int main(){
-  using namespace Dune;
-  using namespace std;
-  ArrayList<double,100> alist;
-
-  randomizeList(alist);
-  int ret=testIterator(alist);
-
-  if(0!=testComparison()) {
-    ret++;
-    cerr<< "Comparison failed!"<<endl;
-  }
-
-  if(0!=testRandomAccess()) {
-    ret++;
-    cerr<< "Ransom Access failed!"<<endl;
-  }
-
-  if(0!=testSorting()) {
-    ret++;
-    cerr<< "Sorting failed!"<<endl;
-  }
-
-  if(0!=testIteratorRemove()) {
-    ret++;
-    cerr<< "Erasing failed!"<<endl;
-  }
-  exit(ret);
-
-}
diff --git a/common/test/bigunsignedinttest.cc b/common/test/bigunsignedinttest.cc
deleted file mode 100644
index 2586185cb..000000000
--- a/common/test/bigunsignedinttest.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/bigunsignedint.hh>
-#include <limits>
-#include <iostream>
-
-int main()
-{
-
-  std::cout<<"unsigned short: max="<<std::numeric_limits<unsigned short>::max()
-           <<" min="<<std::numeric_limits<unsigned short>::min()
-           <<" digits="<<std::numeric_limits<unsigned short>::digits<<std::endl;
-  std::cout<<"int: max="<<std::numeric_limits<int>::max()<<" min="
-           <<std::numeric_limits<int>::min()<<" digits="
-           <<std::numeric_limits<int>::digits<<std::endl;
-  std::cout<<"unsigned int: max="<<std::numeric_limits<unsigned int>::max()
-           <<" min="<<std::numeric_limits<unsigned int>::min()<<" digits="
-           <<std::numeric_limits<unsigned int>::digits<<" digits10="
-           <<std::numeric_limits<unsigned int>::digits10<<" radix="
-           <<std::numeric_limits<unsigned int>::radix<<" eps="
-           <<std::numeric_limits<unsigned int>::epsilon()
-           <<" round_error="
-           <<std::numeric_limits<unsigned int>::round_error()
-           <<" min_exponent="
-           <<std::numeric_limits<unsigned int>::min_exponent
-           <<" float_denorm_style="
-           <<std::numeric_limits<unsigned int>::has_denorm
-           <<" traps="<<std::numeric_limits<unsigned int>::traps
-           <<std::endl;
-  std::cout<<"bigunsignedint: max="<<std::numeric_limits<Dune::bigunsignedint<32> >::max()
-           <<" min="<<std::numeric_limits<Dune::bigunsignedint<32> >::min()<<" digits="<<std::numeric_limits<Dune::bigunsignedint<32> >::digits<<std::endl;
-  std::cout<<"bigunsignedint: max="<<std::numeric_limits<Dune::bigunsignedint<100> >::max()
-           <<" min="<<std::numeric_limits<Dune::bigunsignedint<100> >::min()<<" digits="<<std::numeric_limits<Dune::bigunsignedint<100> >::digits
-           <<" traps="<<std::numeric_limits<Dune::bigunsignedint<100> >::traps
-           <<std::endl;
-
-  int a1, b1, c1;
-  a1=100;
-  b1=3;
-  c1=a1/b1;
-  std::cout<<a1<<"/"<<b1<<"="<<c1<<std::endl;
-
-
-  Dune::bigunsignedint<100> a, b, c;
-  a=100;
-  int ret=0;
-  if(a.touint()!=100)
-  {
-    std::cerr<<"wrong conversion"<<std::endl;
-    ++ret;
-  }
-
-  b=3;
-  if(b.touint()!=3)
-  {
-    std::cerr<<"wrong conversion"<<std::endl;
-    ++ret;
-  }
-  c=a/b;
-  if(c.touint()!=100/3)
-  {
-    std::cerr<<"wrong conversion"<<std::endl;
-    ++ret;
-  }
-  std::cout<<a<<"/"<<b<<"="<<c<<std::endl;
-
-  try{
-
-    a=100;
-    b=0;
-    c=a/1;
-    std::cout<<a1<<"/"<<b1<<"="<<c1<<std::endl;
-    return ret;
-
-  }
-  catch(Dune::MathError e) {
-    std::cout<<e<<std::endl;
-    return 1;
-  }
-
-
-}
diff --git a/common/test/bitsetvectortest.cc b/common/test/bitsetvectortest.cc
deleted file mode 100644
index da317254d..000000000
--- a/common/test/bitsetvectortest.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/bitsetvector.hh>
-#ifdef __GNUC__
-#include <ext/malloc_allocator.h>
-#endif
-
-#include <dune/common/test/iteratortest.hh>
-
-template<class BBF>
-struct ConstReferenceOp
-{
-  typedef typename BBF::value_type bitset;
-  typedef typename BBF::const_reference const_reference;
-
-  void operator()(const_reference t){
-    bitset x = t[0];
-  }
-};
-
-template <class T>
-void testConstBitSetMethods(const T t)
-{
-  t.size();
-  t[0];
-  t[t.size()-1];
-  t << 2;
-  t >> 2;
-  ~t;
-  t.count();
-  t.any();
-  t.none();
-  t.test(0);
-}
-
-template<class BBF>
-void testContainer(BBF & bbf)
-{
-  typedef typename BBF::value_type bitset;
-  typedef typename BBF::reference reference;
-  typedef typename BBF::const_reference const_reference;
-
-  const BBF & cbbf = bbf;
-
-  bitset x = bbf[3];
-  reference y = bbf[4];
-  const_reference z = bbf[4];
-  const reference v = bbf[4];
-
-  // assignement
-  y = false;
-  y[2] = true;
-  y = x;
-  y = z;
-  y = v;
-  x = y;
-  x = z;
-  x = v;
-  y = cbbf[1];
-  x = cbbf[1];
-  bbf[4] = x;
-  bbf[4] = v;
-  bbf[4] = y;
-  bbf[4] = true;
-
-  // invoke methods
-  testConstBitSetMethods(x);
-  testConstBitSetMethods(y);
-  testConstBitSetMethods(z);
-  testConstBitSetMethods(v);
-  testConstBitSetMethods(bbf[1]);
-  testConstBitSetMethods(cbbf[2]);
-
-  // equality
-  y == cbbf[2];
-  y == bbf[3];
-  y == x;
-  x == y;
-  x == z;
-  z == x;
-  z == y;
-  y == z;
-
-  // inequality
-  y != cbbf[2];
-  y != bbf[3];
-  y != x;
-  x != y;
-  x != z;
-  z != x;
-  z != y;
-  y != z;
-
-  // flip
-  y.flip();
-  y.flip(2);
-  y[3].flip();
-}
-
-template<class BBF>
-void testConstContainer(const BBF& bbf){
-  typedef typename BBF::value_type bitset;
-  typedef typename BBF::iterator iterator;
-  typedef typename std::iterator_traits<iterator>::value_type value_type;
-  typedef typename BBF::const_reference reference;
-
-  const BBF & cbbf = bbf;
-
-  bitset x = bbf[3];
-  value_type z;
-  reference y = bbf[4];
-
-  // assignement
-  x = y;
-  x = cbbf[1];
-
-  // equality
-  y == cbbf[2];
-  y == bbf[3];
-  y == x;
-  x == y;
-
-  // inequality
-  y != cbbf[2];
-  y != bbf[3];
-  y != x;
-  x != y;
-}
-
-template<int block_size, class Alloc>
-void doTest() {
-  typedef Dune::BitSetVector<block_size, Alloc> BBF;
-
-  BBF bbf(10,true);
-  const BBF & cbbf = bbf;
-
-  // test containers and some basic bitset operations
-  testContainer(bbf);
-  testConstContainer(bbf);
-  testConstContainer(cbbf);
-
-  // iterator interface
-  ConstReferenceOp<BBF> cop;
-  assert(testIterator(bbf, cop) == 0);
-  assert(testIterator(cbbf, cop) == 0);
-}
-
-int main()
-{
-  doTest<4, std::allocator<bool> >();
-#ifdef __GNUC__
-  doTest<4, __gnu_cxx::malloc_allocator<bool> >();
-#endif
-  return 0;
-}
diff --git a/common/test/conversiontest.cc b/common/test/conversiontest.cc
deleted file mode 100644
index 76d15cf98..000000000
--- a/common/test/conversiontest.cc
+++ /dev/null
@@ -1,12 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include <iostream>
-#include <dune/common/typetraits.hh>
-
-int main ()
-{
-  std :: cout << "Conversion from int to double exists? "
-              << Dune::Conversion< int, double > :: exists << std :: endl;
-
-  return 0;
-}
diff --git a/common/test/deprtuplestest.cc b/common/test/deprtuplestest.cc
deleted file mode 100644
index 5940ee3de..000000000
--- a/common/test/deprtuplestest.cc
+++ /dev/null
@@ -1,259 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/tuples.hh>
-#include <dune/common/helpertemplates.hh>
-#include <string>
-#include <iostream>
-#include <vector>
-#include <cassert>
-#include <cstdlib>
-
-using namespace Dune;
-
-template<int i, int j>
-struct Same
-{
-  enum { value = false};
-};
-
-template<int i>
-struct Same<i,i>
-{
-  enum { value = true};
-};
-
-template<class T>
-void test(T& tuple)
-{
-  float f;
-  f = Element<0>::get(tuple);
-  int i;
-  i = Element<1>::get(tuple);
-  double d;
-  d = Element<2>::get(tuple);
-  char c;
-  c = Element<3>::get(tuple);
-  std::string s;
-  s = Element<4>::get(tuple);
-  typename ElementType<4,typename remove_const<T>::type>::Type s2 = Element<4>::get(tuple);
-}
-
-int iteratorTupleTest()
-{
-  std::vector<int> v;
-
-  v.push_back(0);
-  v.push_back(1);
-  v.push_back(2);
-
-  typedef std::vector<int>::iterator iterator;
-  typedef std::vector<int>::const_iterator const_iterator;
-  typedef tuple<iterator,const_iterator, const_iterator> Tuple;
-
-
-  Tuple tuple_(v.begin(), v.begin(), v.end());
-  dune_static_assert(Size<Tuple>::value==3, "The tuple size should be 3!");;
-
-  int ret=0;
-
-  if(Element<0>::get(tuple_)!= v.begin()) {
-    std::cerr<<"Iterator tuple construction failed!"<<std::endl;
-    ret++;
-  }
-  assert(Element<0>::get(tuple_) == v.begin());
-  assert(Element<1>::get(tuple_) == Element<0>::get(tuple_));
-  if(Element<2>::get(tuple_)!= v.end()) {
-    std::cerr<<"Iterator tuple construction failed!"<<std::endl;
-    ret++;
-  }
-
-  assert(Element<2>::get(tuple_) == v.end());
-  assert(Element<0>::get(tuple_) != v.end());
-  assert(Element<1>::get(tuple_)!= Element<2>::get(tuple_));
-  return ret;
-}
-
-int lessTest()
-{
-  tuple<int,float,double> t1(1,2.0,3.0);
-  tuple<int,int,int> t2(1,2,1);
-
-  int ret=0;
-
-  if ((t1<t2) != false) ret++;
-  std::cout << "[" << t1 << "] < [" << t2 << "] = " << (t1<t2) << std::endl;
-  if ((t2<t1) != true) ret++;
-  std::cout << "[" << t2 << "] < [" << t1 << "] = " << (t2<t1) << std::endl;
-
-  // This would result in a compiler error
-  //  Tuple<int,int> t3(1,2);
-  //  std::cout << "[" << t3 << "] < [" << t1 << "] = " << (t3<t1) << std::endl;
-
-  return ret;
-}
-
-int copyTest()
-{
-  tuple<float,int,double,char,std::string> tuple_, tuple1(3.0,1,3.3,'c',std::string("hallo")), tuple2(tuple1);
-
-  std::cout<<tuple1<<std::endl;
-  std::cout<<tuple2<<std::endl;
-  tuple_=tuple1;
-  std::cout<<tuple_<<std::endl;
-
-  if(tuple_!=tuple1)
-    return 1;
-  if(tuple2!=tuple1)
-    return 1;
-
-  return 0;
-}
-
-int referenceTest()
-{
-  int k=5;
-  int& kr(k);
-  kr=20;
-  int i=50;
-  double d=-3.3;
-  long j=-666;
-  tuple<int,double,long> t1(100, 5.0, 10);
-  tuple<int,int,int> t2(1,5,9);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<int&,double&,long&> tr(i,d,j);
-
-  Element<0>::get(tr)=3;
-  assert(Element<0>::get(tr)==3);
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<int&> ir(i);
-  ir=i1;
-
-  t1=t2;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int pointerTest()
-{
-  int k=5, k1=6;
-  int i=50;
-  double d=-3.3, d1=7.8;
-  long j=-666, j1=-300;
-  tuple<int*,double*,long*> t1(&k, &d, &j);
-  tuple<int*,double*,long*> t2(&k1,&d1,&j1);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<int*,double*,long*> tr(&i,&d,&j);
-
-  *Element<0>::get(tr)=3;
-  assert(*Element<0>::get(tr)==3);
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<int*> ir(&i);
-
-  t2=t1;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int constPointerTest()
-{
-  int k=5, k1=88;
-  int i=50;
-  double d=-3.3, d1=6.8;
-  long j=-666, j1=-500;
-  tuple<const int*, const double*, const long*> t1(&k, &d, &j);
-  tuple<int*, double*, long*> t2(&k1,&d1,&j1);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<const int*, const double*, const long*> tr(&i,&d,&j);
-
-  std::cout << *Element<0>::get(tr)<<std::endl;
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<const int*> ir(&i);
-
-  t1=t2;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int tuple_tr1_test()
-{
-  int ret=0;
-
-  tuple<int,double> t(1,3.14);
-  int sz = tuple_size<tuple<int, double, char> >::value;
-  if(sz!=3) ++ret;
-
-  // contruct a tuple
-
-  t= make_tuple(5, 10.9);
-
-
-  // get the second element
-  tuple_element<1,tuple<int,double> >::type d;
-  d=get<1>(t);
-
-  get<0>(t)=16;
-
-  std::cout<<t<<std::endl;
-
-  return ret;
-}
-
-
-int main(int argc, char** argv)
-{
-  tuple<float,int,double,char,std::string> tuple_;
-
-  test(tuple_);
-  test(static_cast<tuple<float,int,double,char,std::string>& >(tuple_));
-  test(static_cast<const tuple<float,int,double,char,std::string>&>(tuple_));
-  exit(copyTest()+iteratorTupleTest()+referenceTest()+lessTest()
-       +pointerTest()+constPointerTest()+tuple_tr1_test());
-
-}
diff --git a/common/test/exprtmpl.cc b/common/test/exprtmpl.cc
deleted file mode 100644
index d7817fe78..000000000
--- a/common/test/exprtmpl.cc
+++ /dev/null
@@ -1,333 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-/*
-   TODO:
-   - test deeper Matrix nesting
-   - get rid of
-    int *M;
-   - fix RowBlock::N()
-   - remove second template parameter of FlatColIterator
-   - vectorentry -> exrpressionentry
-   - FlatColIterator<Matrix> does not work if Matrix is mutable
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <iostream>
-#include <fstream>
-#include <dune/common/fvector.hh>
-#include <dune/common/timer.hh>
-//#include <dune/istl/bvector.hh>
-//#include <dune/istl/io.hh>
-#include <dune/common/iteratorfacades.hh>
-
-Indent INDENT;
-
-void test_fvector()
-{
-  typedef Dune::FieldVector<double,2> VB;
-  VB v1(1);
-  VB v2(2);
-
-  typedef Dune::ExprTmpl::ConstRef<VB> RVB;
-  VB v = 0.5 * (v1 + v2 * 2) + 3 * v1 - v2;
-  std::cout << " 0.5 * ( " << v1 << " + " << v2 << " * 2) + 3 * " << v1 << " - " << v2 << std::endl;
-}
-
-void test_blockvector()
-{
-  Dune::FieldVector<double,2> v(10);
-  typedef Dune::FieldVector<double,2> VB;
-  typedef Dune::BlockVector<VB> BV;
-
-  const int sz = 3;
-  BV bv1(sz), bv2(sz);
-  bv1 = 1;
-  bv2 = 0;
-  bv2[1][0]=1;
-  bv2[1][1]=2;
-
-  BV bv(sz);
-  bv = -17;
-  printvector (std::cout, bv, "bv", "r");
-  //  bv.emptyClone(bv1);
-  std::cout << "Assingn from ConstRef\n";
-  bv = 2 * (bv1 + bv2);
-  bv -= 1;
-
-  printvector (std::cout, bv1, "bv1", "r");
-  printvector (std::cout, bv2, "bv2", "r");
-  printvector (std::cout, bv, "bv", "r");
-
-}
-
-void test_blockblockvector()
-{
-  const int bs = 2;
-  const int sz = 3;
-  typedef Dune::FieldVector<double,bs> VB;
-  typedef Dune::BlockVector<VB> BV;
-  typedef Dune::BlockVector<BV> BBV;
-  typedef Dune::ExprTmpl::ConstRef<BV> RBV;
-  BV bv1(sz), bv2(sz);
-  bv1 = 1;
-  bv2 = 0;
-  bv2[1][0]=1;
-  bv2[1][1]=2;
-
-  Dune::ExprTmpl::ConstRef<BV> rbv1(bv1);
-  Dune::ExprTmpl::ConstRef<BV> rbv2(bv2);
-
-  BBV bbv(2);
-  bbv[0].resize(bv1.N());
-  bbv[0] = Dune::ExprTmpl::Expression<RBV>(rbv1);
-  bbv[1].resize(bv2.N());
-  bbv[1] = Dune::ExprTmpl::Expression<RBV>(rbv2);
-
-  Dune::Timer stopwatch;
-  stopwatch.reset();
-  for (int i=0; i<10; i++) bbv *= 2;
-  std::cout << "Time bbv*2: " << stopwatch.elapsed() << std::endl;
-#ifndef NOPRINT
-  //   Dune::FlatIterator<BBV> fit(bbv.begin());
-  //   Dune::FlatIterator<BBV> fend(bbv.end());
-  //   int index = 0;
-  //   for(;fit!=fend;++fit)
-  //   {
-  //     BBV::field_type x;
-  //     x = *fit;
-  //     std::cout << index << "\t" << x << std::endl;
-  //     index++;
-  //   }
-  printvector (std::cout, bv1, "bv1", "r");
-  printvector (std::cout, bv2, "bv1", "r");
-  printvector (std::cout, bbv, "bbv", "r");
-#endif
-  std::cout << "infinity_norm(bbv)=" << infinity_norm(bbv) << std::endl;
-  std::cout << "two_norm(bbv)=" << two_norm(bbv) << std::endl;
-  std::cout << "bbv.two_norm()=" << bbv.two_norm() << std::endl;
-  std::cout << "two_norm2(bbv)=" << two_norm2(bbv) << std::endl;
-  std::cout << "one_norm(bbv)=" << one_norm(bbv) << std::endl;
-}
-
-// namespace Dune {
-
-// namespace ExprTmpl {
-
-// template <class K, int iN, int iM>
-// class MatrixMulVector< FieldMatrix<K,iN,iM>,
-//                        BCRSMatrix< FieldMatrix<K,iN,iM> >,
-//                        BlockVector< FieldVector<K,iM> > >
-// {
-// public:
-//   typedef BCRSMatrix< FieldMatrix<K,iN,iM> > Mat;
-//   typedef BlockVector< FieldVector<K,iM> > Vec;
-//   typedef typename
-//     BlockTypeN<MatrixMulVector<Mat,Mat,Vec>,
-//                MyDepth<FieldMatrix<K,iN,iM>,Mat>::value-1>::type
-//     ParentBlockType;
-//   /* constructor */
-//   MatrixMulVector(const Mat & _A, const Vec & _v, int* _M,
-//                   const ParentBlockType & _parent) :
-//     parent(_parent), M(_M), A(_A), v(_v )
-//     {
-//       int parent_i = M[0];
-//       typename Mat::ConstColIterator it = A[parent_i].begin();
-//       typename Mat::ConstColIterator end = A[parent_i].end();
-//       tmp = 0;
-//       for (; it!=end; ++it)
-//       {
-//         it->umv(tmp,v[it.index()]);
-//       }
-//     };
-//   K operator[] (int i) const {
-//     return tmp[i];
-//   }
-//   int N() const { iN; };
-//   const ParentBlockType & parent;
-// private:
-//   FieldVector<K,iN> tmp;
-//   mutable int* M;
-//   const Mat & A;
-//   const Vec & v;
-// };
-
-// } // NS ExpreTmpl
-
-// } // NS Dune
-
-//template<int BlockSize, int N, int M>
-template<int BN, int BM, int N, int M>
-void test_matrix()
-{
-  std::cout << "test_matrix<" << BN << ", " << BM << ", "
-            << N << ", " << M << ">\n";
-
-  typedef double matvec_t;
-  typedef Dune::FieldVector<matvec_t,BN> LVB;
-  typedef Dune::FieldVector<matvec_t,BM> VB;
-  typedef Dune::FieldMatrix<matvec_t,BN,BM> MB;
-  typedef Dune::BlockVector<LVB> LeftVector;
-  typedef Dune::BlockVector<VB> Vector;
-  typedef Dune::BCRSMatrix<MB> Matrix;
-
-  LVB a(0);
-  VB b(2);
-  MB _M(1);
-  _M[1][1] = 3;
-
-  // a += M * b
-  _M.umv(b,a);
-
-#ifndef NOPRINT
-  printmatrix (std::cout, _M, "Matrix", "r");
-  printvector (std::cout, a, "Vector", "r");
-#endif
-
-  // a = M * b
-#if 0
-  a = _M*b;
-#endif
-
-#ifndef NOPRINT
-  printvector (std::cout, a, "Vector", "r");
-#endif
-
-  Matrix A(N,M,Matrix::row_wise);
-  typename Matrix::CreateIterator i=A.createbegin();
-  typename Matrix::CreateIterator end=A.createend();
-  std::cout << "Building matrix structure\n";
-  // build up the matrix structure
-  int c=0;
-  for (; i!=end; ++i)
-  {
-    // insert a non zero entry for myself
-    i.insert(c);
-    // insert index M-1
-    i.insert(M-1);
-    c++;
-  }
-  std::cout << "...done\n";
-
-#ifndef NOPRINT
-  std::cout << "Matrix coldim=" << A.coldim() << std::endl;
-  std::cout << "Matrix rowdim=" << A.rowdim() << std::endl;
-  std::cout << "Matrix N=" << A.M() << std::endl;
-  std::cout << "Matrix M=" << A.N() << std::endl;
-
-  std::cout << "Assembling matrix\n";
-  typename Matrix::Iterator rit=A.begin();
-  typename Matrix::Iterator rend=A.end();
-  for (; rit!=rend; ++rit)
-  {
-    typename Matrix::ColIterator cit=rit->begin();
-    typename Matrix::ColIterator cend=rit->end();
-    for (; cit!=cend; ++cit)
-    {
-      //    *rit = rit.index();
-      *cit = 10*cit.index()+rit.index();
-    }
-  }
-  std::cout << "...done\n";
-
-  printmatrix (std::cout, A, "Matrix", "r");
-#endif
-
-  LeftVector v(N);
-  LeftVector v2(N);
-  v = 0;
-  Vector x(M);
-  x = 1;
-  Dune::FlatIterator<Vector> fit = x.begin();
-  Dune::FlatIterator<Vector> fend = x.end();
-  c = 0;
-  for (; fit!=fend; ++fit)
-    *fit=c++;
-
-  Dune::Timer stopwatch;
-  stopwatch.reset();
-  A.umv(x,v);
-  std::cout << "Time umv: " << stopwatch.elapsed() << std::endl;
-
-  using namespace Dune;
-#ifndef NOPRINT
-  printvector (std::cout, x, "Vector X", "r");
-  printvector (std::cout, v, "Vector", "r");
-#endif
-
-  v2 = 0;
-  stopwatch.reset();
-  v2 += A * x;
-  std::cout << "Time v2+=A*x: " << stopwatch.elapsed() << std::endl;
-#ifndef NOPRINT
-  printvector (std::cout, v2, "Vector2", "r");
-#endif
-
-#ifndef NOPRINT
-  //   int rowIndex[]={1};
-  //   FlatColIterator<const Matrix> it(A[2].begin(),rowIndex);
-  //   for (int i=0; i<5; i++)
-  //   {
-  //     std::cout << *it << " ";
-  //     ++it;
-  //   }
-  //   std::cout << std::endl;
-#endif
-  std::cout << std::endl;
-}
-
-void test_norm()
-{
-  Dune::FieldVector<double,3> a,b;
-  double c;
-  c = (a-b).two_norm();
-  c = two_norm(a-b);
-}
-
-void test_sproduct()
-{
-  Dune::FieldVector<double,2> v(10);
-  typedef Dune::FieldVector<double,2> VB;
-  typedef Dune::BlockVector<VB> BV;
-
-  const int sz = 3;
-  BV bv1(sz), bv2(sz);
-  bv1 = 1;
-  bv2 = 0;
-  bv2[1][0]=1;
-  bv2[1][1]=2;
-
-  double x;
-  x = bv1[0] * bv2[0];
-  x = bv1 * bv2;
-}
-
-int main()
-{
-  //  Dune::dvverb.attach(std::cout);
-  try
-  {
-    //      test_fvector();
-    //      test_blockvector();
-    test_norm();
-    test_sproduct();
-    test_blockblockvector();
-    test_matrix<2,3,3,4>();
-#ifdef NOPRINT
-    test_matrix<3,6,400000,500000>();
-    test_matrix<6,3,400000,500000>();
-    test_matrix<30,60,4000,5000>();
-    test_matrix<150,150,500,4000>();
-    test_matrix<150,150,1000,2000>();
-#endif
-    //      test_matrix<150,150,2000,1000>(); // fails in fmeta_something
-    //      test_matrix<150,150,4000,500>(); // fails in fmeta_something
-  }
-  catch (Dune::Exception & e)
-  {
-    std::cout << e << std::endl;
-  }
-  exit(0);
-}
diff --git a/common/test/float_cmp.cc b/common/test/float_cmp.cc
deleted file mode 100644
index 0d6555260..000000000
--- a/common/test/float_cmp.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// Test the new (Dune) interface of float_cmp
-
-#include <iostream>
-
-#include <dune/common/float_cmp.hh>
-
-using std::cout;
-using std::endl;
-using std::flush;
-
-/////////////////////////
-//
-//  compile time checks
-//
-
-// check that we can access the functions as FloatCmp::function from within the Dune namespace
-namespace Dune {
-  void checkNamespaceAccess() {
-    FloatCmp::eq(0.0, 0.0);
-  }
-} // namespace Dune
-  // check that we can access the functions as FloatCmp::function with using namespace Dune
-void checkUsingAccess() {
-  using namespace Dune;
-  FloatCmp::eq(0.0, 0.0);
-}
-
-// run time checks
-const char* repr(bool b) {
-  if(b) return "true ";
-  else return "false";
-}
-
-int passed = 0;
-int failed = 0;
-
-void count(bool pass) {
-  if(pass) { cout << "passed"; ++passed; }
-  else     { cout << "failed"; ++failed; }
-}
-
-template<typename F>
-void tests(F f1, F f2, typename Dune::FloatCmp::EpsilonType<F>::Type eps, bool inside)
-{
-  bool result;
-
-  cout << "eq(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::eq(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == inside);
-  cout << endl;
-
-  cout << "ge(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::ge(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == (inside || f1 > f2));
-  cout << endl;
-
-  cout << "le(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::le(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == (inside || f1 < f2));
-  cout << endl;
-
-  cout << "ne(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::ne(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == !inside);
-  cout << endl;
-
-  cout << "gt(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::gt(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == (!inside && f1 > f2));
-  cout << endl;
-
-  cout << "lt(" << f1 << ", " << f2 << ", " << eps << ") = " << flush;
-  result = Dune::FloatCmp::lt(f1, f2, eps);
-  cout << repr(result) << "\t";
-  count(result == (!inside && f1 < f2));
-  cout << endl;
-}
-
-template<typename F>
-void tests(F f1, F f2, const typename Dune::FloatCmpOps<F> &ops, bool inside)
-{
-  bool result;
-  cout << "ops = operations(" << ops.epsilon() << ")" << endl;
-
-  cout << "ops.eq(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.eq(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == inside);
-  cout << endl;
-
-  cout << "ops.ge(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.ge(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == (inside || f1 > f2));
-  cout << endl;
-
-  cout << "ops.le(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.le(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == (inside || f1 < f2));
-  cout << endl;
-
-  cout << "ops.ne(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.ne(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == !inside);
-  cout << endl;
-
-  cout << "ops.gt(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.gt(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == (!inside && f1 > f2));
-  cout << endl;
-
-  cout << "ops.lt(" << f1 << ", " << f2 << ") = " << flush;
-  result = ops.lt(f1, f2);
-  cout << repr(result) << "\t";
-  count(result == (!inside && f1 < f2));
-  cout << endl;
-}
-
-int main() {
-  cout.setf(std::ios_base::scientific, std::ios_base::floatfield);
-  cout.precision(16);
-  Dune::FloatCmpOps<double> ops(1e-7);
-
-  cout << "Tests inside the epsilon environment" << endl;
-  tests<double>(1.0, 1.00000001, 1e-7, true);
-  tests<double>(1.0, 1.00000001, ops,  true);
-
-  cout << "Tests outside the epsilon environment, f1 < f2" << endl;
-  tests<double>(1.0, 1.000001, 1e-7, false);
-  tests<double>(1.0, 1.000001, ops,  false);
-
-  cout << "Tests outside the epsilon environment, f1 > f2" << endl;
-  tests<double>(1.000001, 1.0, 1e-7, false);
-  tests<double>(1.000001, 1.0, ops,  false);
-
-  cout << "Tests with f1 = f2 = 0" << endl;
-  tests<double>(0, 0, 1e-7, true);
-  tests<double>(0, 0, ops,  true);
-
-  int total = passed + failed;
-  cout << passed << "/" << total << " tests passed; " << failed << "/" << total << " tests failed" << endl;
-  if(failed > 0) return 1;
-  else return 0;
-}
diff --git a/common/test/fmatrixtest.cc b/common/test/fmatrixtest.cc
deleted file mode 100644
index 0723dc013..000000000
--- a/common/test/fmatrixtest.cc
+++ /dev/null
@@ -1,291 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#define DUNE_ISTL_WITH_CHECKING
-#include "../fmatrix.hh"
-#include <iostream>
-#include <algorithm>
-
-using namespace Dune;
-
-template<typename T, std::size_t n>
-int test_invert_solve(T A_data[n*n], T inv_data[n*n],
-                      T x_data[n], T b_data[n])
-{
-  int ret=0;
-
-  std::cout <<"Checking inversion of:"<<std::endl;
-
-  FieldMatrix<T,n,n> A, inv, calced_inv;
-  FieldVector<T,n> x, b, calced_x;
-
-  for(size_t i =0; i < n; ++i) {
-    x[i]=x_data[i];
-    b[i]=b_data[i];
-    for(size_t j=0; j <n; ++j) {
-      A[i][j] = A_data[i*n+j];
-      inv[i][j] = inv_data[i*n+j];
-    }
-  }
-
-  std::cout<<A<<std::endl;
-
-  // Check whether given inverse is correct
-  FieldMatrix<T,n,n> prod = A;
-  prod.rightmultiply(inv);
-  for (size_t i=0; i<n; i++)
-    prod[i][i] -= 1;
-
-  bool equal=true;
-  if (prod.infinity_norm() > 1e-6) {
-    std::cerr<<"Given inverse wrong"<<std::endl;
-    equal=false;
-  }
-
-  FieldMatrix<T,n,n> copy(A);
-  A.invert();
-
-  calced_inv = A;
-  A-=inv;
-
-
-  double singthres = FMatrixPrecision<>::singular_limit()*10;
-  for(size_t i =0; i < n; ++i)
-    for(size_t j=0; j <n; ++j)
-      if(std::abs(A[i][j])>singthres) {
-        std::cerr<<"calculated inverse wrong at ("<<i<<","<<j<<")"<<std::endl;
-        equal=false;
-      }
-
-  if(!equal) {
-    ret++;
-    std::cerr<<"Calculated inverse was:"<<std::endl;
-    std::cerr <<calced_inv<<std::endl;
-    std::cerr<<"Should have been"<<std::endl;
-    std::cerr<<inv << std::endl;
-  }else
-    std::cout<<"Result is"<<std::endl<<calced_inv<<std::endl;
-
-
-  std::cout<<"Checking solution for rhs="<<b<<std::endl;
-
-  // Check whether given solution is correct
-  FieldVector<T,n> trhs=b;
-
-  copy.mmv(x,trhs);
-  equal=true;
-
-  if (trhs.infinity_norm() > 1e-6) {
-    std::cerr<<"Given rhs does not fit solution"<<std::endl;
-    equal=false;
-  }
-  copy.solve(calced_x, b);
-  FieldVector<T,n> xcopy(calced_x);
-  xcopy-=x;
-
-  equal=true;
-
-  for(size_t i =0; i < n; ++i)
-    if(std::abs(xcopy[i])>singthres) {
-      std::cerr<<"calculated isolution wrong at ("<<i<<")"<<std::endl;
-      equal=false;
-    }
-
-  if(!equal) {
-    ret++;
-    std::cerr<<"Calculated solution was:"<<std::endl;
-    std::cerr <<calced_x<<std::endl;
-    std::cerr<<"Should have been"<<std::endl;
-    std::cerr<<x<<std::endl;
-    std::cerr<<"difference is "<<xcopy<<std::endl;
-  }else
-    std::cout<<"Result is "<<calced_x<<std::endl;
-
-  return ret;
-}
-
-
-int test_invert_solve()
-{
-  int ret=0;
-
-  double A_data[9] = {1, 5, 7, 2, 14, 15, 4, 40, 39};
-  double inv_data[9] = {-9.0/4, 85.0/24, -23.0/24, -3.0/4, 11.0/24, -1.0/24, 1, -5.0/6, 1.0/6};
-  double b[3] = {32,75,201};
-  double x[3] = {1,2,3};
-
-  ret += test_invert_solve<double,3>(A_data, inv_data, x, b);
-
-  double A_data0[9] = {-0.5, 0, -0.25, 0.5, 0, -0.25, 0, 0.5, 0};
-  double inv_data0[9] = {-1, 1, 0, 0, 0, 2, -2, -2, 0};
-  double b0[3] = {32,75,201};
-  double x0[3] = {43, 402, -214};
-
-  ret += test_invert_solve<double,3>(A_data0, inv_data0, x0, b0);
-
-  double A_data1[9] = {0, 1, 0, 1, 0, 0, 0, 0, 1};
-  double b1[3] = {0,1,2};
-  double x1[3] = {1,0,2};
-
-  ret += test_invert_solve<double,3>(A_data1, A_data1, x1, b1);
-
-  double A_data2[9] ={3, 1, 6, 2, 1, 3, 1, 1, 1};
-  double inv_data2[9] ={-2, 5, -3, 1, -3, 3, 1, -2, 1};
-  double b2[3] = {2, 7, 4};
-  double x2[3] = {19,-7,-8};
-
-  return ret + test_invert_solve<double,3>(A_data2, inv_data2, x2, b2);
-}
-
-template<class K, int n, int m>
-void test_matrix()
-{
-  typedef typename FieldMatrix<K,n,m>::size_type size_type;
-
-  FieldMatrix<K,n,m> A;
-  FieldVector<K,n> f;
-  FieldVector<K,m> v;
-
-  // assign matrix
-  A=K();
-  // random access matrix
-  for (size_type i=0; i<n; i++)
-    for (size_type j=0; j<m; j++)
-      A[i][j] = i*j;
-  // iterator matrix
-  typename FieldMatrix<K,n,m>::RowIterator rit = A.begin();
-  for (; rit!=A.end(); ++rit)
-  {
-    rit.index();
-    typename FieldMatrix<K,n,m>::ColIterator cit = rit->begin();
-    for (; cit!=rit->end(); ++cit)
-    {
-      cit.index();
-      (*cit) *= 2;
-    }
-  }
-
-  // assign vector
-  f = 1;
-
-  // random access vector
-  for (size_type i=0; i<v.dim(); i++)
-    v[i] = i;
-  // iterator vector
-  typename FieldVector<K,m>::iterator it = v.begin();
-  typename FieldVector<K,m>::ConstIterator end = v.end();
-  for (; it!=end; ++it)
-  {
-    it.index();
-    (*it) *= 2;
-  }
-  // reverse iterator vector
-  it = v.rbegin();
-  end = v.rend();
-  for (; it!=end; --it)
-    (*it) /= 2;
-  // find vector
-  for (size_type i=0; i<v.dim(); i++)
-  {
-    it = v.find(i);
-    (*it) += 1;
-  }
-
-  // matrix vector product
-  A.umv(v,f);
-  // check that mv and umv are doing the same thing
-  {
-    FieldVector<K,n> res2(0);
-    FieldVector<K,n> res1;
-
-    FieldVector<K,m> b(1);
-
-    A.mv(b, res1);
-    A.umv(b, res2);
-
-    if( (res1 - res2).two_norm() > 1e-12 )
-    {
-      DUNE_THROW(FMatrixError,"mv and umv are not doing the same!");
-    }
-  }
-
-  A.infinity_norm();
-
-  std::sort(v.begin(), v.end());
-
-  // print matrix
-  std::cout << A << std::endl;
-  // print vector
-  std::cout << f << std::endl;
-
-
-  {
-    FieldMatrix<K,n,m> A2 = A;
-    A2 *= 2;
-
-    FieldMatrix<K,n,m> B = A;
-    B += A;
-    B -= A2;
-    if (std::abs(B.infinity_norm()) > 1e-12)
-      DUNE_THROW(FMatrixError,"Operator +=/-= test failed!");
-  }
-  {
-    FieldMatrix<K,n,m> A3 = A;
-    A3 *= 3;
-
-    FieldMatrix<K,n,m> B = A;
-    B.axpy( K( 2 ), B );
-    B -= A3;
-    if (std::abs(B.infinity_norm()) > 1e-12)
-      DUNE_THROW(FMatrixError,"Axpy test failed!");
-  }
-}
-
-int test_determinant()
-{
-  int ret = 0;
-
-  FieldMatrix<double, 4, 4> B;
-  B[0][0] =  3.0; B[0][1] =  0.0; B[0][2] =  1.0; B[0][3] =  0.0;
-  B[1][0] = -1.0; B[1][1] =  3.0; B[1][2] =  0.0; B[1][3] =  0.0;
-  B[2][0] = -3.0; B[2][1] =  0.0; B[2][2] = -1.0; B[2][3] =  2.0;
-  B[3][0] =  0.0; B[3][1] = -1.0; B[3][2] =  0.0; B[3][3] =  1.0;
-  if (std::abs(B.determinant() + 2.0) > 1e-12)
-  {
-    std::cerr << "Determinant 1 test failed" << std::endl;
-    ++ret;
-  }
-
-  B[0][0] =  3.0; B[0][1] =  0.0; B[0][2] =  1.0; B[0][3] =  0.0;
-  B[1][0] = -1.0; B[1][1] =  3.0; B[1][2] =  0.0; B[1][3] =  0.0;
-  B[2][0] = -3.0; B[2][1] =  0.0; B[2][2] = -1.0; B[2][3] =  2.0;
-  B[3][0] = -1.0; B[3][1] =  3.0; B[3][2] =  0.0; B[3][3] =  2.0;
-  if (B.determinant() != 0.0)
-  {
-    std::cerr << "Determinant 2 test failed" << std::endl;
-    ++ret;
-  }
-
-  return 0;
-}
-
-int main()
-{
-  try {
-    test_matrix<float, 1, 1>();
-    test_matrix<double, 1, 1>();
-    test_matrix<int, 10, 5>();
-    test_matrix<double, 5, 10>();
-    test_determinant();
-    Dune::FieldMatrix<double, 34, 34> A(1e-15);
-    for (int i=0; i<34; i++) A[i][i] = 1;
-    A.invert();
-    return test_invert_solve();
-  }
-  catch (Dune::Exception & e)
-  {
-    std::cerr << "Exception: " << e << std::endl;
-  }
-}
diff --git a/common/test/fvectortest.cc b/common/test/fvectortest.cc
deleted file mode 100644
index 6a679ed2e..000000000
--- a/common/test/fvectortest.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <dune/common/fvector.hh>
-#include <dune/common/exceptions.hh>
-#include <iostream>
-
-using Dune::FieldVector;
-
-template<class ct, int d>
-class FieldVectorMainTest
-{
-protected:
-  FieldVectorMainTest() {
-    FieldVector<ct,d> v(1);
-    FieldVector<ct,d> w(2);
-    bool b;
-
-    (w+v).two_norm();
-    (w+v).two_norm2();
-    (w+v).one_norm();
-
-    b = (w != v);
-    b = (w == v);
-    w=v;
-  }
-};
-
-template<class ct, int d>
-class FieldVectorTest : public FieldVectorMainTest<ct,d>
-{
-public:
-  FieldVectorTest() : FieldVectorMainTest<ct,d>() {}
-};
-
-template<class ct>
-class FieldVectorTest<ct,1>: public FieldVectorMainTest<ct,1>
-{
-public:
-  FieldVectorTest() : FieldVectorMainTest<ct,1>()
-  {
-    ct a = 1;
-    FieldVector<ct,1> v(2);
-    FieldVector<ct,1> w(2);
-    bool b;
-
-    v = a;
-    v = w = v;
-    a = v;
-
-    b = (v == a);
-    b = (a == v);
-
-    a = v + a;
-    a = v - a;
-    a = v * a;
-    a = v / a;
-
-    v = v + a;
-    v = v - a;
-    v = v * a;
-    v = v / a;
-
-    a = a + v;
-    a = a - v;
-    a = a * v;
-    a = a / v;
-
-    v = a + v;
-    v = a - v;
-    v = a * v;
-    v = a / v;
-
-    v -= v;
-    v -= a;
-    v += v;
-    v += a;
-    v *= a;
-    v /= a;
-  }
-};
-
-int main()
-{
-  try {
-    FieldVectorTest<int, 0>();
-    FieldVectorTest<int, 1>();
-    FieldVectorTest<int, 2>();
-    FieldVectorTest<int, 3>();
-    FieldVectorTest<float, 0>();
-    FieldVectorTest<float, 1>();
-    FieldVectorTest<float, 2>();
-    FieldVectorTest<float, 3>();
-    FieldVectorTest<double, 0>();
-    FieldVectorTest<double, 1>();
-    FieldVectorTest<double, 2>();
-    FieldVectorTest<double, 3>();
-  } catch (Dune::Exception& e) {
-    std::cerr << e << std::endl;
-    return 1;
-  } catch (...) {
-    std::cerr << "Generic exception!" << std::endl;
-    return 2;
-  }
-}
diff --git a/common/test/gcdlcmtest.cc b/common/test/gcdlcmtest.cc
deleted file mode 100644
index f1f85407e..000000000
--- a/common/test/gcdlcmtest.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <iostream>
-
-#include <dune/common/gcd.hh>
-#include <dune/common/lcm.hh>
-#include <dune/common/static_assert.hh>
-
-void test()
-{
-  dune_static_assert((Dune::Gcd<2*2*2*5*5*5*11, 2*2*5*13>::value == 2*2*5), "gcd not working properly");
-  dune_static_assert((Dune::Lcm<11,3>::value == 33), "lcm not working properly");
-  dune_static_assert((Dune::Lcm<18,15>::value == 18*15/3), "lcm not working properly");
-  dune_static_assert((Dune::Lcm<10800,Dune::Lcm<36000,7680>::value>::value==1728000), "lcm not working properly");
-}
-
-int main()
-{
-  std::cout<<" gcd(2,5)="<<Dune::Gcd<2,5>::value<<" gcd(3, 18)="
-           <<Dune::Gcd<3,18>::value<<" gcd("<<2*2*2*5*5*5*11<<", "
-           << 2*2*5*13<<")="<<Dune::Gcd<2*2*2*5*5*5*11, 2*2*5*13>::value
-           <<std::endl;
-  std::cout<<" lcm(18,15)="<<Dune::Lcm<18,15>::value
-           <<" lcm(10800,36000,7680)="<<Dune::Lcm<10800,Dune::Lcm<36000,7680>::value>::value<<std::endl;
-
-}
diff --git a/common/test/iteratorfacadetest.cc b/common/test/iteratorfacadetest.cc
deleted file mode 100644
index 2d6e34cf3..000000000
--- a/common/test/iteratorfacadetest.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/test/iteratorfacadetest.hh>
-#include <dune/common/test/iteratortest.hh>
-#include <iostream>
-#include <algorithm>
-
-template<class Container>
-void randomize(Container& cont){
-  srand(300);
-  double size=1000;
-
-  for(int i=0; i < 100; i++) {
-    cont[i] = (size*(rand()/(RAND_MAX+1.0)));
-
-  }
-}
-
-template<class Container>
-void print(Container& cont){
-  for(int i=0; i < 100; i++)
-    std::cout<<cont[i]<<" ";
-  std::cout<<std::endl;
-}
-
-template<class Container>
-int containerTest(Container & container)
-{
-  randomize(container);
-  //  print(container);
-  //std::sort(container.begin(), container.end());
-  //print(container);
-
-  const Container ccontainer(container);
-  int ret=0;
-  Printer<const double> print;
-  ret += testIterator(container, print);
-  ret += testIterator(ccontainer, print);
-
-  return ret;
-}
-
-int main(){
-  // Test the TestIterator;
-  TestContainer<double, Dune::ForwardIteratorFacade> forwardcontainer;
-  TestContainer<double, Dune::BidirectionalIteratorFacade> bidicontainer;
-  TestContainer<double, Dune::RandomAccessIteratorFacade> randomcontainer;
-
-  int ret=0;
-
-  ret += containerTest(forwardcontainer);
-  ret += containerTest(bidicontainer);
-  ret += containerTest(randomcontainer);
-
-  exit(ret);
-}
diff --git a/common/test/iteratorfacadetest.hh b/common/test/iteratorfacadetest.hh
deleted file mode 100644
index bf1bbfe77..000000000
--- a/common/test/iteratorfacadetest.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_ITERATORFACADETEST_HH
-#define DUNE_ITERATORFACADETEST_HH
-#include <dune/common/iteratorfacades.hh>
-#include <dune/common/genericiterator.hh>
-#include <dune/common/typetraits.hh>
-
-template<class T,
-    template<class,class,class,class> class IteratorFacade=Dune::RandomAccessIteratorFacade>
-class TestContainer {
-public:
-  typedef Dune::GenericIterator<TestContainer<T,IteratorFacade>,T,T&,std::ptrdiff_t,IteratorFacade> iterator;
-
-  typedef Dune::GenericIterator<const TestContainer<T,IteratorFacade>,const T,const T&,std::ptrdiff_t,IteratorFacade> const_iterator;
-
-  TestContainer(){
-    for(int i=0; i < 100; i++)
-      values_[i]=i;
-  }
-
-  iterator begin(){
-    return iterator(*this, 0);
-  }
-
-  const_iterator begin() const {
-    return const_iterator(*this, 0);
-  }
-
-  iterator end(){
-    return iterator(*this, 100);
-  }
-
-  const_iterator end() const {
-    return const_iterator(*this, 100);
-  }
-
-  T& operator[](int i){
-    return values_[i];
-  }
-
-
-  const T& operator[](int i) const {
-    return values_[i];
-  }
-private:
-  T values_[100];
-};
-
-#endif
diff --git a/common/test/iteratortest.hh b/common/test/iteratortest.hh
deleted file mode 100644
index be02697d1..000000000
--- a/common/test/iteratortest.hh
+++ /dev/null
@@ -1,297 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-#ifndef DUNE_ITERATORTEST_HH
-#define DUNE_ITERATORTEST_HH
-#include <iostream>
-#include <algorithm>
-#include <dune/common/typetraits.hh>
-
-/**
- * @brief Tests the capabilities of a forward iterator.
- * @param begin Iterator positioned at the stsrt.
- * @param end Iterator positioned at the end.
- * @param opt Functor for doing whatever one wants.
- */
-template<class Iter, class Opt>
-int testForwardIterator(Iter begin, Iter end, Opt& opt)
-{
-  //std::cout<< "forward: ";
-  Iter tmp=begin, tmp1(begin);
-  int ret=0;
-  if(tmp!=begin || tmp1!=begin || tmp!=tmp1) {
-    std::cerr<<" Copying iterator failed "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret=1;
-  }
-
-  for(; begin!=end; ++begin)
-    opt(*begin);
-  //std::cout<< " OK "<<std::endl;
-  return ret;
-}
-
-/**
- * @brief Tests the capabilities of a bidirectional iterator.
- *
- * Namely it test wether random positions can be reached from
- * each directions.
- *
- * @param begin Iterator positioned at the stsrt.
- * @param end Iterator positioned at the end.
- * @param opt Functor for doing whatever one wants.
- */
-template<class Iter, class Opt>
-int testBidirectionalIterator(Iter begin, Iter end, Opt opt)
-{
-  testForwardIterator(begin, end, opt);
-  Iter tbegin=--begin;
-  Iter tend=--end;
-  for(; tbegin!=tend; --tend)
-    opt(*tend);
-
-  typename Iter::difference_type size = std::distance(begin, end);
-  srand(300);
-
-  int no= (size>10) ? 10 : size;
-
-  for(int i=0; i < no; i++)
-  {
-    int index = static_cast<int>(size*(rand()/(RAND_MAX+1.0)));
-    int backwards=size-index;
-    tbegin=begin;
-    tend=end;
-    for(int j=0; j < index; j++) ++tbegin;
-    for(int j=0; j < backwards; j++) --tend;
-
-    if(tbegin != tend)
-    {
-      std::cerr<<"Did not reach same index by starting forward from "
-               <<"begin and backwards from end."<<std::endl;
-      return 1;
-    }
-  }
-  return 0;
-}
-
-template<class Iter, class Opt>
-int testRandomAccessIterator(Iter begin, Iter end, Opt opt){
-  int ret=testBidirectionalIterator(begin, end, opt);
-
-  typename Iter::difference_type size = end-begin;
-
-  srand(300);
-
-  int no= (size>10) ? 10 : size;
-
-  for(int i=0; i < no; i++)
-  {
-    int index = static_cast<int>(size*(rand()/(RAND_MAX+1.0)));
-    opt(begin[index]);
-  }
-
-  // Test the less than operator
-  if(begin != end &&!( begin<end))
-  {
-    std::cerr<<"! (begin()<end())"<<std::endl;
-    ret++;
-  }
-
-  if(begin != end) {
-    if(begin-end >= 0) {
-      std::cerr<<"begin!=end, but begin-end >= 0!"<<std::endl;
-      ret++;
-    }
-    if(end-begin <= 0) {
-      std::cerr<<"begin!=end, but end-begin <= 0!"<<std::endl;
-      ret++;
-    }
-  }
-
-  for(int i=0; i < no; i++)
-  {
-    int index = static_cast<int>(size*(rand()/(RAND_MAX+1.0)));
-    Iter rand(begin), test(begin), res;
-    rand+=index;
-
-    if((res=begin+index) != rand)
-    {
-      std::cerr << " i+n should have the result i+=n, where i is the "
-                <<"iterator and n is the difference type!" <<std::endl;
-      ret++;
-    }
-    for(int i=0; i< index; i++) ++test;
-
-    if(test != rand)
-    {
-      std::cerr << "i+=n should have the same result as applying the"
-                << "increment ooperator n times!"<< std::cerr;
-      ret++;
-    }
-
-    rand=end, test=end;
-    rand-=index;
-
-
-    if((end-index) != rand)
-    {
-      std::cerr << " i-n should have the result i-=n, where i is the "
-                <<"iterator and n is the difference type!" <<std::endl;
-      ret++;
-    }
-    for(int i=0; i< index; i++) --test;
-
-    if(test != rand)
-    {
-      std::cerr << "i+=n should have the same result as applying the"
-                << "increment ooperator n times!"<< std::cerr;
-      ret++;
-    }
-  }
-
-  for(int i=0; i < no; i++)
-  {
-    Iter iter1 = begin+static_cast<int>(size*(rand()/(RAND_MAX+1.0)));
-    Iter iter2 = begin+static_cast<int>(size*(rand()/(RAND_MAX+1.0)));
-    typename Iter::difference_type diff = iter2 -iter1;
-    if((iter1+diff)!=iter2) {
-      std::cerr<< "i+(j-i) = j should hold, where i,j are iterators!"<<std::endl;
-      ret++;
-    }
-  }
-
-  return ret;
-}
-
-template<class Iter, class Opt, typename iterator_category>
-int testIterator(Iter& begin, Iter& end, Opt& opt, iterator_category cat);
-
-template<class Iter, class Opt>
-int testIterator(Iter& begin, Iter& end, Opt& opt, std::forward_iterator_tag)
-{
-  return testForwardIterator(begin, end, opt);
-}
-
-template<class Iter, class Opt>
-int testIterator(Iter& begin, Iter& end, Opt& opt, std::bidirectional_iterator_tag)
-{
-  return testBidirectionalIterator(begin, end, opt);
-}
-
-template<class Iter, class Opt>
-int testIterator(Iter& begin, Iter& end, Opt& opt, std::random_access_iterator_tag)
-{
-  //  std::cout << "Testing iterator ";
-  int ret = testRandomAccessIterator(begin, end, opt);
-  //std::cout<<std::endl;
-  return ret;
-}
-
-template<class Iter, class Opt>
-int testConstIterator(Iter& begin, Iter& end, Opt& opt)
-{
-  //std::cout << "Testing constant iterator: ";
-  int ret=testIterator(begin, end, opt, typename std::iterator_traits<Iter>::iterator_category());
-  //std::cout<<std::endl;
-  return ret;
-}
-
-template<bool>
-struct TestSorting
-{
-  template<class Container, typename IteratorTag>
-  static void testSorting(Container& c, IteratorTag tag)
-  {}
-  template<class Container>
-  static void testSorting(Container& c, std::random_access_iterator_tag)
-  {
-    std::sort(c.begin(), c.end());
-  }
-}
-;
-
-template<>
-struct TestSorting<false>
-{
-  template<class Container>
-  static void testSorting(Container& c, std::random_access_iterator_tag)
-  {}
-  template<class Container, typename IteratorTag>
-  static void testSorting(Container& c, IteratorTag tag)
-  {}
-};
-
-
-template<class Container, class Opt, bool testSort>
-int testIterator(Container& c, Opt& opt)
-{
-  typename Container::iterator begin=c.begin(), end=c.end();
-  typename Container::const_iterator cbegin(begin);
-  typename Container::const_iterator cbegin1=begin;
-  typename Container::const_iterator cend=c.end();
-  int ret = 0;
-
-  TestSorting<testSort>::testSorting(c, typename std::iterator_traits<typename Container::iterator>::iterator_category());
-
-  if(end!=cend || cend!=end)
-  {
-    std::cerr<<"constant and mutable iterators should be equal!"<<std::endl;
-    ret=1;
-  }
-  ret += testConstIterator(cbegin, cend, opt);
-  if(testSort)
-    ret += testIterator(begin,end,opt);
-
-  return ret;
-}
-
-template<class Container, class Opt>
-int testIterator(Container& c, Opt& opt)
-{
-  return testIterator<Container,Opt,true>(c,opt);
-}
-
-template<class Iter, class Opt>
-void testAssignment(Iter begin, Iter end, Opt& opt)
-{
-  //std::cout << "Assignment: ";
-  for(; begin!=end; begin++)
-    *begin=typename std::iterator_traits<Iter>::value_type();
-  //std::cout<<" Done."<< std::endl;
-}
-
-template<class Iter, class Opt>
-int testIterator(Iter& begin, Iter& end, Opt& opt)
-{
-  testAssignment(begin, end, opt);
-  return testConstIterator(begin, end, opt);
-}
-
-
-template<class T>
-class Printer {
-  typename Dune::remove_const<T>::type res;
-public:
-  Printer() : res(0){}
-  void operator()(const T& t){
-    res+=t;
-    //    std::cout << t <<" ";
-  }
-};
-
-template<class Container, class Opt>
-int testIterator(const Container& c, Opt& opt)
-{
-  typename Container::const_iterator begin=c.begin(), end=c.end();
-  return testConstIterator(begin,end, opt);
-}
-
-
-template<class Container>
-int testIterator(Container& c)
-{
-  Printer<typename std::iterator_traits<typename Container::iterator>::value_type> print;
-  return testIterator(c,print);
-}
-
-#endif
diff --git a/common/test/lrutest.cc b/common/test/lrutest.cc
deleted file mode 100644
index a4ef1b50e..000000000
--- a/common/test/lrutest.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include <assert.h>
-#include <iostream>
-#include <dune/common/lru.hh>
-
-void lru_test()
-{
-  std::cout << "testing Dune::lru<int,double>\n";
-
-  Dune::lru<int, double> lru;
-  lru.insert(10, 1.0);
-  assert(lru.front() == lru.back());
-  lru.insert(11, 2.0);
-  assert(lru.front() == 2.0 && lru.back() == 1.0);
-  lru.insert(12, 99);
-  lru.insert(13, 1.3);
-  lru.insert(14, 12345);
-  lru.insert(15, -17);
-  assert(lru.front() == -17 && lru.back() == 1.0);
-  // update
-  lru.insert(10);
-  assert(lru.front() == 1.0 && lru.back() == 2.0);
-  // update
-  lru.touch(13);
-  assert(lru.front() == 1.3 && lru.back() == 2.0);
-  // remove item
-  lru.pop_front();
-  assert(lru.front() == 1.0 && lru.back() == 2.0);
-  // remove item
-  lru.pop_back();
-  assert(lru.front() == 1.0 && lru.back() == 99);
-
-  std::cout << "... passed\n";
-}
-
-int main ()
-{
-  lru_test();
-
-  return 0;
-}
diff --git a/common/test/mpicollectivecommunication.cc b/common/test/mpicollectivecommunication.cc
deleted file mode 100644
index 6d5b1f389..000000000
--- a/common/test/mpicollectivecommunication.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/mpihelper.hh>
-
-#if HAVE_MPI
-#include <dune/common/mpicollectivecommunication.hh>
-#endif
-
-#include <iostream>
-int main(int argc, char** argv)
-{
-  typedef Dune::MPIHelper Helper;
-  typedef Helper::MPICommunicator MPIComm;
-
-#if HAVE_MPI
-  {
-    Helper& mpi = Helper::instance(argc, argv);
-
-
-    Dune::CollectiveCommunication<MPIComm> comm(mpi.getCommunicator());
-
-    enum { length = 5 };
-    double values[5];
-    for(int i=0; i<length; ++i) values[i] = 1.0;
-
-    double * commBuff = ((double *) &values[0]);
-    // calculate global sum
-    comm.sum( commBuff , length );
-
-    double val[length];
-    for(int i=0; i<length; ++i) val[i] = 1.0;
-    // calculate global sum by calling sum for each component
-    for(int i=0; i<length; ++i)
-    {
-      // this method works
-      val[i] = comm.sum( val[i] );
-    }
-
-    // result from above should be size of job
-    double sum = mpi.size();
-    for(int i=0; i<length; ++i)
-    {
-      assert( std::abs( values[i] - sum ) < 1e-8 );
-      assert( std::abs( val[i]    - sum ) < 1e-8 );
-    }
-  }
-
-  std::cout << "We are at the end!"<<std::endl;
-#else
-  std::cout << "WARNING: test Dune::CollectiveCommunication<MPI_Comm> disabled because MPI not available! " << std::endl;
-#endif
-  return 0;
-}
diff --git a/common/test/mpihelpertest.cc b/common/test/mpihelpertest.cc
deleted file mode 100644
index a7210da77..000000000
--- a/common/test/mpihelpertest.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/mpihelper.hh>
-#include <iostream>
-int main(int argc, char** argv)
-{
-  typedef Dune::MPIHelper Helper;
-
-  {
-    Helper& mpi = Helper::instance(argc, argv);
-
-    Helper::MPICommunicator comm = mpi.getCommunicator();
-    comm= mpi.getCommunicator();
-  }
-
-  {
-    Helper& mpi = Helper::instance(argc, argv);
-
-    Helper::MPICommunicator comm= mpi.getCommunicator();
-    comm= mpi.getCommunicator();
-  }
-  std::cout << "We are at the end!"<<std::endl;
-
-}
diff --git a/common/test/nullptr-test.cc b/common/test/nullptr-test.cc
deleted file mode 100644
index 26e539d5a..000000000
--- a/common/test/nullptr-test.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/nullptr.hh>
-
-void basic_tests()
-{
-  typedef nullptr_t NULLPTR_T;
-  char* ch = nullptr;    // ch has the null pointer value
-  char* ch2 = 0;         // ch2 has the null pointer value
-#ifdef FAIL
-  int n = nullptr;       // error
-#endif
-  int n2 = 0;            // n2 is zero
-  if( ch == 0 ) ;        // evaluates to true
-  if( ch == nullptr ) ;  // evaluates to true
-  if( ch ) ;             // evaluates to false
-  if( n2 == 0 ) ;        // evaluates to true
-  ch = ch2;
-#ifdef FAIL
-  if( n2 == nullptr ) ;  // error
-  if( nullptr ) ;        // error, no conversion to bool
-  if( nullptr == 0 ) ;   // error
-  // arithmetic
-  nullptr = 0;           // error, nullptr is not an lvalue
-  nullptr + 2;           // error
-#endif
-}
-
-int main()
-{
-  basic_tests();
-  return 0;
-}
diff --git a/common/test/nullptr-test2.cc b/common/test/nullptr-test2.cc
deleted file mode 100644
index f940cdf53..000000000
--- a/common/test/nullptr-test2.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/nullptr.hh>
diff --git a/common/test/parsetest.cc b/common/test/parsetest.cc
deleted file mode 100644
index 0a186068a..000000000
--- a/common/test/parsetest.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-/* test if the common headers can be parsed without errors */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/*
-
-   to create all the includes the following commandline is pretty handy:
-
-   find dune/common/ -maxdepth 1 -name \*.hh -exec echo '#include <{}>' \; | sort
-
- */
-
-#include <dune/common/alignment.hh>
-#include <dune/common/array.hh>
-#include <dune/common/arraylist.hh>
-#include <dune/common/bigunsignedint.hh>
-#include <dune/common/bitsetvector.hh>
-#include <dune/common/configparser.hh>
-#include <dune/common/debugstream.hh>
-#include <dune/common/enumset.hh>
-#include <dune/common/exceptions.hh>
-#include <dune/common/finitestack.hh>
-#include <dune/common/fmatrix.hh>
-#include <dune/common/fvector.hh>
-#include <dune/common/gcd.hh>
-#include <dune/common/genericiterator.hh>
-#include <dune/common/helpertemplates.hh>
-#include <dune/common/iteratorfacades.hh>
-#include <dune/common/lcm.hh>
-#include <dune/common/misc.hh>
-#include <dune/common/poolallocator.hh>
-#include <dune/common/precision.hh>
-#include <dune/common/propertymap.hh>
-#include <dune/common/sllist.hh>
-#include <dune/common/smartpointer.hh>
-#include <dune/common/stdstreams.hh>
-#include <dune/common/timer.hh>
-#include <dune/common/tuples.hh>
-#include <dune/common/typetraits.hh>
-#include <dune/common/bartonnackmanifcheck.hh>
-
-int main () {}
diff --git a/common/test/poolallocatortest.cc b/common/test/poolallocatortest.cc
deleted file mode 100644
index 8eb1e6c76..000000000
--- a/common/test/poolallocatortest.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/poolallocator.hh>
-#include <dune/common/alignment.hh>
-#include <dune/common/fmatrix.hh>
-
-using namespace Dune;
-
-struct UnAligned
-{
-  char t;
-  char s;
-  char k;
-};
-
-
-
-template<std::size_t size, typename T>
-int testPool()
-{
-  int ret=0;
-
-  Pool<T,size> pool;
-
-  int elements = Pool<T,size>::elements;
-  //int poolSize        = Pool<T,size>::size;
-  //int chunkSize   = Pool<T,size>::chunkSize;
-  //int alignedSize = Pool<T,size>::alignedSize;
-
-  unsigned long* oelements = new unsigned long[10*elements];
-
-  typedef typename Pool<T,size>::Chunk Chunk;
-
-  //Fill 10 chunks
-  for(int chunk=0; chunk < 10; ++chunk) {
-    //std::cout<< std::endl<<"Chunk "<<chunk<<" ";
-    unsigned long element = reinterpret_cast<unsigned long>(pool.allocate());
-    void* celement = reinterpret_cast<void*>(element);
-    //std::cout << element<<" "<< celement<<",  "<<std::endl;
-
-    Chunk* currentChunk = pool.chunks_;
-
-    assert(element==reinterpret_cast<unsigned long>(currentChunk->memory_));
-    unsigned long end = reinterpret_cast<unsigned long>(currentChunk->chunk_)+Pool<T,size>::chunkSize;
-
-    if(element< reinterpret_cast<unsigned long>(currentChunk->chunk_))
-    {
-      std::cerr <<" buffer overflow during first alloc: "<<reinterpret_cast<unsigned long>(currentChunk->chunk_)
-                <<">"<<element<<"+"<<sizeof(T)<<std::endl;
-      return ++ret;
-    }
-
-    if(end < element + sizeof(T)) {
-      std::cerr <<" buffer overflow during first alloc: "<<end<<"<"<<element<<"+"<<sizeof(T)<<std::endl;
-      return ++ret;
-    }
-
-    oelements[chunk*elements]=element;
-
-    for(int i=1; i < elements; i++)
-    {
-      element = reinterpret_cast<unsigned long>(pool.allocate());
-      celement = reinterpret_cast<void*>(element);
-
-      //  std::cout << element<<" "<<celement<<",  "<<std::endl;
-
-      if(element< reinterpret_cast<unsigned long>(currentChunk->chunk_)) {
-        std::cerr <<" buffer overflow during first alloc: "<<reinterpret_cast<unsigned long>(currentChunk->chunk_)
-                  <<">"<<element<<"+"<<sizeof(T)<<std::endl;
-        return ++ret;
-      }
-
-      if(end < element + sizeof(T)) {
-        std::cerr <<" buffer overflow during "<<i<<" alloc: "<<end<<"<"<<element+sizeof(T)<<std::endl;
-        return ++ret;
-
-      }
-
-      if(oelements[chunk*elements+i-1]+sizeof(T)>element) {
-        std::cerr<<"allocated elements overlap!"<<std::endl;
-        return ++ret;
-      }
-
-      oelements[chunk*elements+i]=element;
-    }
-  }
-
-
-
-  for(int i=0; i < elements*10; ++i)
-    pool.free(reinterpret_cast<T*>(oelements+i));
-  delete[] oelements;
-
-  return ret;
-}
-
-template<typename T>
-int testPool()
-{
-  const std::size_t size = sizeof(T)>=2 ? sizeof(T)-2 : 0;
-
-  int ret=0;
-
-  std::cout<<"Checking "<<typeid(T).name()<<" sizeof="<<sizeof(T)<<" with size "<< size<<
-  " alignment="<<AlignmentOf<T>::value<<std::endl;
-
-  ret += testPool<0,T>();
-  ret += testPool<size,T>();
-  ret += testPool<5*size,T>();
-  ret += testPool<11*size,T>();
-  ret += testPool<33*size,T>();
-
-  return ret;
-}
-int main(int argc, char **argv)
-{
-  int ret=0;
-
-  ret += testPool<int>();
-
-  ret+= testPool<double>();
-
-  ret+= testPool<char>();
-
-  ret += testPool<Dune::FieldMatrix<double,10,10> >();
-
-
-  std::cout<<AlignmentOf<UnAligned>::value<<" "<<sizeof(UnAligned)<<std::endl;
-
-  ret += testPool<UnAligned>();
-
-  return ret;
-}
diff --git a/common/test/settest.cc b/common/test/settest.cc
deleted file mode 100644
index 6c57a418c..000000000
--- a/common/test/settest.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/enumset.hh>
-#include <iostream>
-int main()
-{
-  using namespace Dune;
-  std::cout<<Combine<EnumItem<int,1>,EnumItem<int,2>,int>::contains(1)<<
-  " "<<Combine<EnumItem<int,1>,EnumItem<int,2>,int>::contains(2)<<
-  " "<<Combine<Combine<EnumItem<int,1>,EnumItem<int,2>,int>,EnumItem<int,0>,int>::contains(3)<<
-  " "<<EnumRange<int,1,3>::contains(3)<<std::endl;
-}
diff --git a/common/test/singletontest.cc b/common/test/singletontest.cc
deleted file mode 100644
index 8d25fc305..000000000
--- a/common/test/singletontest.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/singleton.hh>
-#include <iostream>
-class Foo : public Dune::Singleton<Foo>
-{
-public:
-  Foo()
-  {
-    bytes = new char[1000];
-  }
-
-  ~Foo()
-  {
-    delete[] bytes;
-  }
-private:
-  char* bytes;
-};
-
-class Foo1
-{
-public:
-  Foo1()
-  {
-    bytes = new char[1000];
-  }
-
-  ~Foo1()
-  {
-    delete[] bytes;
-  }
-private:
-  char* bytes;
-};
-
-typedef Dune::Singleton<Foo1> FooSingleton;
-
-
-Foo* globalFoo = 0;
-Foo1* globalFoo1 = 0;
-
-void setFoo()
-{
-  globalFoo = &Foo::instance();
-}
-
-
-void setFoo1()
-{
-  globalFoo1 = &FooSingleton::instance();
-}
-
-int testFoo()
-{
-  if(globalFoo != &Foo::instance()) {
-    std::cerr<<" Foo is not a real singleton!"<<std::endl;
-    return 1;
-  }
-  return 0;
-}
-
-
-int testFoo1()
-{
-  if(globalFoo1 != &FooSingleton::instance()) {
-    std::cerr<<" Foo is not a real singleton!"<<std::endl;
-    return 1;
-  }
-  return 0;
-}
-
-int main()
-{
-  int ret=0;
-  {
-    Foo& foo = Foo::instance();
-    Foo& foo1 = Foo::instance();
-    if(&foo!=&foo1) {
-      std::cerr<<" Foo is not a real singleton!"<<std::endl;
-      ++ret;
-    }
-  }
-  setFoo();
-  ret += testFoo();
-  {
-    Foo1& foo = FooSingleton::instance();
-    Foo1& foo1 = FooSingleton::instance();
-    if(&foo!=&foo1) {
-      std::cerr<<" Foo is not a real singleton!"<<std::endl;
-      ++ret;
-    }
-  }
-  setFoo1();
-  return ret += testFoo1();
-}
diff --git a/common/test/sllisttest.cc b/common/test/sllisttest.cc
deleted file mode 100644
index acccbf56d..000000000
--- a/common/test/sllisttest.cc
+++ /dev/null
@@ -1,444 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/sllist.hh>
-#include <dune/common/test/iteratortest.hh>
-#include <dune/common/poolallocator.hh>
-#include <iostream>
-
-class DoubleWrapper
-{
-public:
-  DoubleWrapper(double b)
-    : d(b)
-  {
-    std::cout<<"Constructed "<<this<<std::endl;
-  }
-
-  DoubleWrapper()
-    : d()
-  {
-    std::cout<<"Constructed "<<this<<std::endl;
-  }
-
-  DoubleWrapper(const DoubleWrapper& other)
-    : d(other.d)
-  {
-    std::cout<<"Copied "<<this<<" from "<<&other<<std::endl;
-  }
-
-  ~DoubleWrapper()
-  {
-    std::cout<<"Destructing "<<this<<std::endl;
-  }
-
-  operator double() const
-  {
-    return d;
-  }
-
-  bool operator==(const DoubleWrapper& other) const
-  {
-    return d == other.d;
-  }
-
-
-  bool operator!=(const DoubleWrapper& other) const
-  {
-    return d != other.d;
-  }
-
-private:
-  double d;
-};
-
-typedef Dune::PoolAllocator<int,8*1024-16> IntAllocator;
-//typedef std::allocator<int> IntAllocator;
-typedef Dune::PoolAllocator<double,8*1024-16> DoubleAllocator;
-//typedef std::allocator<double> DoubleAllocator;
-typedef Dune::PoolAllocator<DoubleWrapper,8*1024-16> DoubleWAllocator;
-//typedef std::allocator<DoubleWrapper> DoubleWAllocator;
-
-template<typename T, typename A>
-const T& tail(const Dune::SLList<T,A>& alist)
-{
-  typedef typename Dune::SLList<T,A>::const_iterator Iterator;
-  Iterator tail=alist.begin();
-
-  for(int i = alist.size() - 1; i > 0; --i)
-    ++tail;
-  return *tail;
-}
-
-template<typename T,class A>
-int check(const Dune::SLList<T,A>& alist, const T* vals)
-{
-  typedef typename Dune::SLList<T,A>::const_iterator iterator;
-  int i=0;
-  for(iterator iter = alist.begin(); iter != alist.end(); ++iter, i++) {
-    if( vals[i] != *iter ) {
-      std::cerr<<" List missmatch! "<<__FILE__<<":"<<__LINE__<<std::endl;
-      return 1;
-    }
-  }
-  return 0;
-}
-
-
-template<typename T,class A>
-void randomizeListBack(Dune::SLList<T,A>& alist){
-  using namespace Dune;
-
-  srand(300);
-
-  int lowest=0, highest=1000, range=(highest-lowest)+1;
-
-  T vals[10];
-
-  for(int i=0; i < 10; i++) {
-    T d = T(range*(rand()/(RAND_MAX+1.0)));
-    alist.push_back(d);
-    vals[i]=d;
-  }
-
-  check(alist, vals);
-}
-
-template<typename T,class A>
-void randomizeListFront(Dune::SLList<T,A>& alist){
-  using namespace Dune;
-
-  srand(300);
-  T vals[10];
-
-  int lowest=0, highest=1000, range=(highest-lowest)+1;
-
-  for(int i=0; i < 10; i++) {
-    T d = T(range*(rand()/(RAND_MAX+1.0)));
-    alist.push_front(d);
-    vals[9-i]=d;
-  }
-
-  check(alist, vals);
-}
-int testAssign()
-{
-  typedef Dune::SLList<int,IntAllocator> List;
-  List alist, blist;
-
-  alist.push_back(3);
-  alist.push_back(4);
-  alist.push_back(5);
-
-  blist.push_back(-1);
-
-  blist=alist;
-  List::iterator biter=blist.begin(), aiter=alist.begin();
-  for(; aiter!=alist.end(); ++aiter, ++biter)
-    if(*aiter!=*biter) {
-      std::cerr<<"Asignment failed "<<__FILE__<<":"<<__LINE__<<std::endl;
-      return 1;
-    }
-  return 0;
-}
-
-int testDelete()
-{
-  typedef Dune::SLList<int,IntAllocator> List;
-  List alist;
-
-  alist.push_back(3);
-  alist.push_back(4);
-  alist.push_back(5);
-
-  List::ModifyIterator iter = alist.beginModify();
-  iter.remove();
-  if(*(alist.begin())!=4) {
-    std::cerr<<"delete next on position before head failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-  if(*iter!=4) {
-    std::cerr<<"delete next failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-  ++iter;
-  iter.remove();
-  if(iter!=alist.end()) {
-    std::cerr<<"delete next failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    return 1;
-  }
-  if(tail(alist)!=4) {
-    std::cerr<<"delete before tail did not change tail! "<<__FILE__<<":"<<__LINE__<<std::endl;
-  }
-
-  return 0;
-}
-
-int testEmpty()
-{
-  typedef Dune::SLList<int,DoubleAllocator> List;
-  int ret = 0;
-
-  List alist;
-  if(!alist.empty()) {
-    std::cerr<<"Newly created list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(0 != alist.size()) {
-    std::cerr<<"Newly created list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  randomizeListBack(alist);
-
-
-  if(alist.empty()) {
-    std::cerr<<"Randomized list is empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(0 == alist.size()) {
-    std::cerr<<"Randomized list is empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  for(int elements=alist.size(); elements>0; --elements)
-    alist.pop_front();
-
-  if(!alist.empty()) {
-    std::cerr<<"Emptied list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(0 != alist.size()) {
-    std::cerr<<"Emptied list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-
-  if(ret!=0)
-    // Skip next tests
-    return ret;
-
-  randomizeListFront(alist);
-
-  if(alist.empty()) {
-    std::cerr<<"Randomized list is empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(0 == alist.size()) {
-    std::cerr<<"Randomized list is empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  alist.clear();
-
-  if(!alist.empty()) {
-    std::cerr<<"Emptied list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(0 != alist.size()) {
-    std::cerr<<"Emptied list not empty! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-  return ret;
-
-}
-
-int testInsert()
-{
-  typedef Dune::SLList<int,IntAllocator> List;
-  //typedef Dune::SLList<int> List;
-
-  List alist;
-
-  alist.push_back(3);
-  List::ModifyIterator iter=alist.beginModify();
-  iter.insert(7);
-  int ret=0;
-
-  if(*iter!=3) {
-    std::cerr<<"Value at current position changed due to insert! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  if(*alist.begin()!=7) {
-    std::cerr<<"Insert did not change first element! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  iter=alist.beginModify();
-  iter.insert(5);
-
-  if(iter==alist.end() || *iter!=7) {
-    std::cerr<<"Insertion failed.! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-
-  if(*(alist.begin())!=5) {
-    std::cerr<<"Insert after at onebeforeBegin did not change head! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-  iter = alist.endModify();
-
-  if(iter!=alist.end()) {
-    std::cerr <<" Iterator got by endModify does not equal that got by end()! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-
-
-  iter.insert(20);
-
-  if(iter != alist.end()) {
-    std::cerr<<"Insertion changed end iterator! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-
-  if(tail(alist)!=20) {
-    std::cerr<<"tail was not changed!! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-
-  alist.clear();
-  iter=alist.beginModify();
-  iter.insert(5);
-  if(iter!=alist.end()) {
-    std::cerr<<"Insertion failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ++ret;
-  }
-  return ret;
-}
-
-int testPushPop(){
-  using namespace Dune;
-  int ret=0;
-
-  Dune::SLList<int,IntAllocator> alist;
-  //std::cout<<"PushPop 1:"<<alist<<std::endl;
-
-  if(alist.begin() != alist.end()) {
-    ret++;
-    std::cerr<<"For empty list begin and end iterator do not match! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  alist.push_back(1);
-
-  //std::cout<<"Push back 1: "<<alist<<std::endl;
-
-  if(*(alist.begin())!=1) {
-    std::cerr<<"Entry should be 1! Push back failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-    ret++;
-  }
-
-  alist.push_back(2);
-
-  //std::cout<<"Push back 2: "<<alist<<std::endl;
-
-  if(*(alist.begin())!=1) {
-    ret++;
-    std::cerr<<"Entry should be 2! Push back failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-  }
-
-  alist.push_front(3);
-  //std::cout<<"Push front 3: "<<alist<<std::endl;
-
-  if(*(alist.begin())!=3) {
-    ret++;
-    std::cerr<<"Entry should be 3! Push front failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-  }
-
-  alist.pop_front();
-  //std::cout<<*(alist.begin())<<" Pop front: "<<alist<<std::endl;
-
-
-  if(*(alist.begin())!=1) {
-    ret++;
-    std::cerr<<"Entry should be 1, but is "<<*(alist.begin())<<"! Push back failed! "<<__FILE__<<":"<<__LINE__<<std::endl;
-  }
-  return ret;
-}
-
-int main()
-{
-  int ret=0;
-
-  //Dune::SLList<double> list;
-  Dune::SLList<double,DoubleAllocator> list, list1;
-  Dune::SLList<DoubleWrapper, DoubleWAllocator> list2;
-
-  randomizeListBack(list1);
-  randomizeListFront(list);
-
-  Dune::SLList<double,DoubleAllocator> copied(list);
-  if(copied.size()!=list.size()) {
-    std::cerr << "Size of copied list does not match!"<<std::endl;
-    ++ret;
-  }
-  else{
-    typedef Dune::SLList<double,DoubleAllocator>::const_iterator Iterator;
-    Iterator iend = list.end();
-    for(Iterator iter1=list.begin(), iter2=copied.begin(); iter1 != iend; ++iter1, ++iter2)
-      if(*iter1!=*iter2) {
-        std::cerr << "Entries of copied are not the same!"<<std::endl;
-        ++ret;
-      }
-  }
-
-  randomizeListFront(list2);
-
-  Printer<std::iterator_traits<Dune::SLList<double,DoubleAllocator>::ModifyIterator>::value_type> print;
-
-  Dune::SLList<double,DoubleAllocator>::ModifyIterator lbegin = list.beginModify(), lend = list.endModify();
-
-  double& d = lbegin.dereference();
-
-  d=2.0;
-
-  double& d1 = lbegin.dereference();
-
-  d1=3.0;
-
-  lbegin.dereference()=5.0;
-
-  lbegin.operator*()=5.0;
-
-  *lbegin=5.0;
-
-  std::cout << "Testing ConstIterator "<<std::endl;
-  ret+=testConstIterator(lbegin, lend, print);
-  std::cout << "Testing Iterator "<<std::endl;
-  ret+=testIterator(list);
-  std::cout << "Testing Iterator "<<std::endl;
-  ret+=testIterator(list1);
-
-  std::cout<< " Test PushPop "<<std::endl;
-  ret+=testPushPop();
-  std::cout<<" Test OneBeforeBegin"<<std::endl;
-
-  //ret+=testOneBeforeBegin(list1);
-
-  std::cout<< "test empty"<<std::endl;
-  ret+=testEmpty();
-  std::cout<< "test insert"<<std::endl;
-
-  ret+=testInsert();
-  std::cout<< "test delete"<<std::endl;
-  ret+=testDelete();
-
-  ret+=testAssign();
-  list.clear();
-  list1.clear();
-  list2.clear();
-  std::cout<<" randomize back"<<std::endl;
-  randomizeListBack(list);
-  std::cout<<" randomize front"<<std::endl;
-  randomizeListFront(list1);
-  return ret;
-}
diff --git a/common/test/smallobject.cc b/common/test/smallobject.cc
deleted file mode 100644
index a9464feb3..000000000
--- a/common/test/smallobject.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <iostream>
-
-#include <dune/common/timer.hh>
-#include <dune/common/smallobject.hh>
-#include <dune/common/poolallocator.hh>
-
-using namespace Dune;
-
-class A
-{
-  int a_;
-
-public:
-  A( int a )
-    : a_( a )
-  {}
-};
-
-
-class B
-  : public SmallObject
-{
-  int b_;
-
-public:
-  B( int b )
-    : b_( b )
-  {}
-};
-
-
-int main ( int argc, char **argv )
-{
-  Timer timer;
-
-  const unsigned long iterations = 1 << 27;
-  const unsigned long factor = 16;
-  std :: cout << "Performing " << (factor*iterations) << " iterations." << std :: endl;
-
-  timer.reset();
-  for( unsigned long i = 0; i < iterations; ++i )
-  {
-    A *a = new A( (int)i );
-    delete a;
-  }
-  double timeA = factor*timer.elapsed();
-  std :: cout << "Time without SmallObject: " << timeA << std :: endl;
-
-  timer.reset();
-  for( unsigned long i = 0; i < factor*iterations; ++i )
-  {
-    B *b = new B( (int)i );
-    delete b;
-  }
-  double timeB = timer.elapsed();
-  std :: cout << "Time with SmallObject: " << timeB << std :: endl;
-  std :: cout << "Result: SmallObject is " << (timeA / timeB) << " times faster." << std :: endl;
-
-  timer.reset();
-  PoolAllocator<B,100> pool;
-  for( unsigned long i = 0; i < factor*iterations; ++i )
-  {
-    B *b = pool.allocate(1);
-    pool.construct(b, B((int)i ));
-    pool.destroy(b);
-    pool.deallocate(b,1);
-  }
-  double timeB2 = timer.elapsed();
-  std :: cout << "Time with pool allocator: " << timeB2 << std :: endl;
-  std :: cout << "Result: pool allocator is " << (timeA / timeB2) << " times faster." << std :: endl;
-  std :: cout << "Result: pool allocator is " << (timeB / timeB2) << " times faster than SmallObject." << std :: endl;
-
-  // we require a speedup due to SmallObject
-  //assert((timeA / timeB) > 1.0);
-
-  // we require the speed of the poolallocator
-  // assert((timeB2 / timeB) > 1.0);
-}
diff --git a/common/test/smartpointertest.cc b/common/test/smartpointertest.cc
deleted file mode 100644
index 48665ea42..000000000
--- a/common/test/smartpointertest.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/smartpointer.hh>
-#include <iostream>
-#include <vector>
-#include <cstdlib>
-
-int main(){
-  using namespace Dune;
-  int ret=0;
-  {
-    SmartPointer<double> b;
-    {
-      SmartPointer<double> d(b);
-      *b = 7;
-    }
-    if(b.count()!=1) {
-      std::cout << "Reference count is wrong! "<<__LINE__<<":"<<
-      __FILE__<<std::endl;
-      ret=1;
-    }
-    {
-      SmartPointer<double> c(b);
-
-      if(*b!=*c) {
-        std::cerr<<"References do not match! "<<__LINE__<<":"<<
-        __FILE__<<std::endl;
-        ret=1;
-      }
-      if(b.count()!=2 || c.count()!=2) {
-        std::cout << "Reference count is wrong! "<<__LINE__<<":"<<
-        __FILE__<<std::endl;
-        ret=1;
-      }
-      *b=8;
-      if(*b!=8 || *c!=8) {
-        std::cout<<"Assigning new value failed! "<<__LINE__<<":"<<
-        __FILE__<<std::endl;
-        ret=1;
-      }
-    }
-
-    if(b.count()!=1) {
-      std::cout << "Reference count is wrong! "<<__LINE__<<":"<<
-      __FILE__<<std::endl;
-      ret=1;
-    }
-  }
-  exit(ret);
-}
diff --git a/common/test/static_assert_test.cc b/common/test/static_assert_test.cc
deleted file mode 100644
index bc2284fa9..000000000
--- a/common/test/static_assert_test.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <dune/common/static_assert.hh>
-
-int main()
-{
-  dune_static_assert(true, "OK");
-  dune_static_assert(false, "FAIL");
-  return 0;
-}
diff --git a/common/test/streamtest.cc b/common/test/streamtest.cc
deleted file mode 100644
index 087e2fb1d..000000000
--- a/common/test/streamtest.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-
-/*
-
-   Test to check if the standard streams in libdune can be properly
-   linked with this program and if they work
-
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <fstream>
-
-#include <dune/common/stdstreams.hh>
-
-// enums are a nice special case (was a bug)
-enum check { VALUE = 5 };
-
-int main () {
-  try {
-    // let output happen but vanish
-    std::ofstream dummy("/dev/null");
-    Dune::derr.attach(dummy);
-
-    Dune::derr.push(true);
-    Dune::derr << "Teststring" << std::endl;
-
-    Dune::derr << VALUE << std::endl;
-    Dune::dverb << VALUE << std::endl;
-    Dune::dvverb << VALUE << std::endl;
-    Dune::dinfo << VALUE << std::endl;
-    Dune::dwarn << VALUE << std::endl;
-    Dune::dgrave << VALUE << std::endl;
-
-    // instantiate private stream and connect global stream
-    {
-      Dune::DebugStream<> mystream(dummy);
-      Dune::derr.tie(mystream);
-      Dune::derr << "Blah" << std::endl;
-      // untie before mystream gets destructed
-      Dune::derr.untie();
-    }
-
-    Dune::derr << "Still working" << std::endl;
-  } catch (Dune::Exception &e) {
-    std::cerr << e << std::endl;
-    return 2;
-  } catch (...) {
-    return 1;
-  };
-
-  return 0;
-}
diff --git a/common/test/test-stack.cc b/common/test/test-stack.cc
deleted file mode 100644
index 479f2e7a9..000000000
--- a/common/test/test-stack.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <cassert>
-#include <iostream>
-
-#include <dune/common/finitestack.hh>
-
-// stack depth to test
-static const int MAX = 100;
-
-template <class SType>
-void exercise_stack (SType &S) {
-  assert(S.empty());
-
-  // fill stack to maximum
-  for (int i = 0; i < MAX; ++i) {
-    assert(! S.full());
-    S.push(i);
-    assert(! S.empty());
-  };
-
-  for (int i = MAX - 1; i >= 0; --i) {
-    int x = S.top();
-    int y = S.pop();
-    assert(x == i);
-    assert(y == i);
-  };
-
-  assert(S.empty());
-}
-
-int main () {
-  // initialize stack, push stuff and check if it comes out again
-  Dune::FiniteStack<int, MAX> fixedstack;
-  exercise_stack(fixedstack);
-
-  // check error handling of Stack
-  try {
-    Dune::FiniteStack<int, MAX> stack1;
-
-    assert(stack1.empty());
-    stack1.pop();
-
-    // exception has to happen
-    std::cerr << "Expected exception Dune::RangeError, but nothing caught\n";
-    return 1;
-  } catch (Dune::RangeError &e) {
-    // exception was correctly reported
-    std::cerr << "Caught expected Dune::RangeError: " << e.what() << std::endl;
-    return 0;
-  } catch (Dune::Exception &e) {
-    // exception was correctly reported
-    std::cerr << "Dune::Exception: " << e.what() << std::endl;
-    return 1;
-  } catch (std::exception &e) {
-    // exception was correctly reported
-    std::cerr << "std::exception: " << e.what() << std::endl;
-    return 1;
-  } catch (...) {
-    // wrong type of exception
-    std::cerr << "unknown exception\n";
-    return 1;
-  }
-
-}
diff --git a/common/test/testfassign.cc b/common/test/testfassign.cc
deleted file mode 100644
index 563a9a54b..000000000
--- a/common/test/testfassign.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <iostream>
-#include <dune/common/fvector.hh>
-#include <dune/common/fassign.hh>
-
-using Dune::zero;
-using Dune::nextRow;
-
-template<class T> struct Print {};
-
-template<int s>
-struct Print< Dune::FieldVector<int,s> >
-{
-  static void print(Dune::FieldVector<int,s> & v)
-  {
-    for (int i=0; i<s; i++)
-      std::cout << "value[" << i << "] = " << v[i] << "\n";
-  }
-};
-
-template<int n, int m>
-struct Print< Dune::FieldMatrix<int,n,m> >
-{
-  static void print(Dune::FieldMatrix<int,n,m> & A)
-  {
-    for (int i=0; i<n; i++)
-      for (int j=0; j<m; j++)
-        std::cout << "value[" << i << "][" << j << "] = " << A[i][j] << "\n";
-  }
-};
-
-template<class T>
-void print(T & t) {
-  Print<T>::print(t);
-}
-
-int main ()
-{
-  try
-  {
-#ifdef _M
-    Dune::FieldMatrix<int,_N,_M> x;
-#else
-    Dune::FieldVector<int,_N> x;
-#endif
-
-    x <<= _VALUES;
-    print(x);
-
-    return 0;
-  }
-  catch (Dune::MathError &e)
-  {
-    std::cerr << "Dune reported MathError: " << e << std::endl;
-    return 1;
-  }
-  catch (Dune::Exception &e)
-  {
-    std::cerr << "Dune reported error: " << e << std::endl;
-    return 1;
-  }
-  catch (...)
-  {
-    std::cerr << "Unknown exception thrown!" << std::endl;
-    return 1;
-  }
-}
diff --git a/common/test/testfassign2.cc b/common/test/testfassign2.cc
deleted file mode 100644
index 24cbafb58..000000000
--- a/common/test/testfassign2.cc
+++ /dev/null
@@ -1,6 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <dune/common/fassign.hh>
diff --git a/common/test/timing.cc b/common/test/timing.cc
deleted file mode 100644
index 3abd6d31c..000000000
--- a/common/test/timing.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <iostream>
-#include <fstream>
-#include <dune/common/fvector.hh>
-#include <dune/common/timer.hh>
-#include <dune/istl/bvector.hh>
-#include <dune/common/iteratorfacades.hh>
-
-template<int bs, int sz>
-void timing_vector()
-{
-  std::cout << "timing_vector<" << bs << ", " << sz << ">\n";
-  typedef Dune::FieldVector<double,bs> VB;
-  typedef Dune::BlockVector<VB> BV;
-  typedef Dune::BlockVector<BV> BBV;
-  BV bv1(sz), bv2(sz);
-  BV bv3(sz), bv4(sz);
-  bv1 = 1;
-  bv2 = 0;
-  bv2[1][0]=1;
-  bv2[1][1]=2;
-
-  bv3 = 0;
-  bv4 = 0;
-
-  BBV bbv(2);
-  bbv[0].resize(bv1.N());
-  bbv[1].resize(bv2.N());
-
-  BBV bbv2(2);
-#warning deep copy is broken!
-  /* bbv2 = bbv2; */
-  bbv2[0] = bv3;
-  bbv2[1] = bv4;
-  //  bbv2 = 0;
-
-  Dune::Timer stopwatch;
-  stopwatch.reset();
-  for (int i=0; i<10; i++)
-  {
-#ifdef DUNE_EXPRESSIONTEMPLATES
-#ifdef DUNE_FLATIT
-    for (int a=0; a<2; a++)
-      for (int b=0; b<sz; b++)
-        for (int c=0; c<bs; c++)
-          bbv2[a][b][c] += 2*bbv[a][b][c];
-#else
-    bbv2 += 2*bbv;
-#endif
-#else
-    bbv2.axpy(2,bbv);
-#endif
-  }
-  std::cout << "Time [bbv2.axpy(2,bbv)] " << stopwatch.elapsed() << std::endl;
-}
-
-#if 0
-//template<int BlockSize, int N, int M>
-template<int BN, int BM, int N, int M>
-void timing_matrix()
-{
-  std::cout << "timing_matrix<" << BN << ", " << BM << ", "
-            << N << ", " << M << ">\n";
-
-  typedef double matvec_t;
-  typedef Dune::FieldVector<matvec_t,BN> LVB;
-  typedef Dune::FieldVector<matvec_t,BM> VB;
-  typedef Dune::FieldMatrix<matvec_t,BN,BM> MB;
-  typedef Dune::BlockVector<LVB> LeftVector;
-  typedef Dune::BlockVector<VB> Vector;
-  typedef Dune::BCRSMatrix<MB> Matrix;
-
-  Matrix A(N,M,Matrix::row_wise);
-  typename Matrix::CreateIterator i=A.createbegin();
-  typename Matrix::CreateIterator end=A.createend();
-  std::cout << "Building matrix structure\n";
-  // build up the matrix structure
-  int c=0;
-  for (; i!=end; ++i)
-  {
-    // insert a non zero entry for myself
-    i.insert(c);
-    // insert index M-1
-    i.insert(M-1);
-    c++;
-  }
-  std::cout << "...done\n";
-
-  LeftVector v(N);
-  v = 0;
-  Vector x(M);
-  x = 1;
-
-  Dune::Timer stopwatch;
-  stopwatch.reset();
-#ifdef DUNE_EXPRESSIONTEMPLATES
-  v += A * x;
-#else
-  A.umv(x,v);
-#endif
-  std::cout << "Time [v+=A*x] " << stopwatch.elapsed() << std::endl;
-
-  std::cout << std::endl;
-}
-#endif
-
-int main ()
-{
-#ifdef DUNE_EXPRESSIONTEMPLATES
-#ifdef DUNE_FLATIT
-  std::cout << "Handwritten loops\n";
-#else
-  std::cout << "Expression Templates\n";
-#endif
-#else
-  std::cout << "Template Meta Program\n";
-#endif
-
-  timing_vector<1,1000000>();
-  timing_vector<2,500000>();
-  timing_vector<10,100000>();
-  timing_vector<40,25000>();
-  timing_vector<100,10000>();
-  timing_vector<400,2500>();
-
-  //   timing_matrix<150,150,500,4000>();
-  //   timing_matrix<150,150,1000,2000>();
-  //  timing_matrix<1,18,400000,500000>();
-  //   timing_matrix<6,3,400000,500000>();
-  //   timing_matrix<3,6,400000,500000>();
-  //   timing_matrix<18,1,400000,500000>();
-  //   timing_matrix<50,50,9000,10000>();
-
-  std::cout << std::endl;
-}
diff --git a/common/test/tuplestest.cc b/common/test/tuplestest.cc
deleted file mode 100644
index 3dbd20c2e..000000000
--- a/common/test/tuplestest.cc
+++ /dev/null
@@ -1,259 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <dune/common/tuples.hh>
-#include <dune/common/helpertemplates.hh>
-#include <string>
-#include <iostream>
-#include <vector>
-#include <cassert>
-#include <cstdlib>
-
-using namespace Dune;
-
-template<int i, int j>
-struct Same
-{
-  enum { value = false};
-};
-
-template<int i>
-struct Same<i,i>
-{
-  enum { value = true};
-};
-
-template<class T>
-void test(T& tuple)
-{
-  float f;
-  f = get<0>(tuple);
-  int i;
-  i = get<1>(tuple);
-  double d;
-  d = get<2>(tuple);
-  char c;
-  c = get<3>(tuple);
-  std::string s;
-  s = get<4>(tuple);
-  typename tuple_element<4,typename remove_const<T>::type>::type s2 = get<4>(tuple);
-}
-
-int iteratorTupleTest()
-{
-  std::vector<int> v;
-
-  v.push_back(0);
-  v.push_back(1);
-  v.push_back(2);
-
-  typedef std::vector<int>::iterator iterator;
-  typedef std::vector<int>::const_iterator const_iterator;
-  typedef tuple<iterator,const_iterator, const_iterator> Tuple;
-
-
-  Tuple tuple_(v.begin(), v.begin(), v.end());
-  dune_static_assert(tuple_size<Tuple>::value==3, "The tuple size should be 3!");;
-
-  int ret=0;
-
-  if(get<0>(tuple_)!= v.begin()) {
-    std::cerr<<"Iterator tuple construction failed!"<<std::endl;
-    ret++;
-  }
-  assert(get<1>(tuple_) == v.begin());
-  assert(get<1>(tuple_) == get<0>(tuple_));
-  if(get<2>(tuple_)!= v.end()) {
-    std::cerr<<"Iterator tuple construction failed!"<<std::endl;
-    ret++;
-  }
-
-  assert(get<2>(tuple_) == v.end());
-  assert(get<0>(tuple_) != v.end());
-  assert(get<1>(tuple_)!= Element<2>::get(tuple_));
-  return ret;
-}
-
-int lessTest()
-{
-  tuple<int,float,double> t1(1,2.0,3.0);
-  tuple<int,int,int> t2(1,2,1);
-
-  int ret=0;
-
-  if ((t1<t2) != false) ret++;
-  std::cout << "[" << t1 << "] < [" << t2 << "] = " << (t1<t2) << std::endl;
-  if ((t2<t1) != true) ret++;
-  std::cout << "[" << t2 << "] < [" << t1 << "] = " << (t2<t1) << std::endl;
-
-  // This would result in a compiler error
-  //  Tuple<int,int> t3(1,2);
-  //  std::cout << "[" << t3 << "] < [" << t1 << "] = " << (t3<t1) << std::endl;
-
-  return ret;
-}
-
-int copyTest()
-{
-  tuple<float,int,double,char,std::string> tuple_, tuple1(3.0,1,3.3,'c',std::string("hallo")), tuple2(tuple1);
-
-  std::cout<<tuple1<<std::endl;
-  std::cout<<tuple2<<std::endl;
-  tuple_=tuple1;
-  std::cout<<tuple_<<std::endl;
-
-  if(tuple_!=tuple1)
-    return 1;
-  if(tuple2!=tuple1)
-    return 1;
-
-  return 0;
-}
-
-int referenceTest()
-{
-  int k=5;
-  int& kr(k);
-  kr=20;
-  int i=50;
-  double d=-3.3;
-  long j=-666;
-  tuple<int,double,long> t1(100, 5.0, 10);
-  tuple<int,int,int> t2(1,5,9);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<int&,double&,long&> tr(i,d,j);
-
-  get<0>(tr)=3;
-  assert(get<0>(tr)==3);
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<int&> ir(i);
-  ir=i1;
-
-  t1=t2;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int pointerTest()
-{
-  int k=5, k1=6;
-  int i=50;
-  double d=-3.3, d1=7.8;
-  long j=-666, j1=-300;
-  tuple<int*,double*,long*> t1(&k, &d, &j);
-  tuple<int*,double*,long*> t2(&k1,&d1,&j1);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<int*,double*,long*> tr(&i,&d,&j);
-
-  *get<0>(tr)=3;
-  assert(*get<0>(tr)==3);
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<int*> ir(&i);
-
-  t2=t1;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int constPointerTest()
-{
-  int k=5, k1=88;
-  int i=50;
-  double d=-3.3, d1=6.8;
-  long j=-666, j1=-500;
-  tuple<const int*, const double*, const long*> t1(&k, &d, &j);
-  tuple<int*, double*, long*> t2(&k1,&d1,&j1);
-  std::cout << "i="<<i<<" d="<<d<<" j="<<j<<std::endl;
-
-  tuple<const int*, const double*, const long*> tr(&i,&d,&j);
-
-  std::cout << *get<0>(tr)<<std::endl;
-
-  std::cout <<"tr="<< tr<<std::endl;
-
-  tuple<int> i1(5);
-  tuple<const int*> ir(&i);
-
-  t1=t2;
-
-  std::cout <<"tr="<< tr<<std::endl;
-  std::cout <<"t1="<< t1<<std::endl;
-  tr=t1;
-
-  if(tr!=t1)
-    return 1;
-  else
-    std::cout<<"t1="<<t1<< " tr="<<tr<<std::endl;
-
-
-  return 0;
-}
-
-int tuple_tr1_test()
-{
-  int ret=0;
-
-  tuple<int,double> t(1,3.14);
-  int sz = tuple_size<tuple<int, double, char> >::value;
-  if(sz!=3) ++ret;
-
-  // contruct a tuple
-
-  t= make_tuple(5, 10.9);
-
-
-  // get the second element
-  tuple_element<1,tuple<int,double> >::type d;
-  d=get<1>(t);
-
-  get<0>(t)=16;
-
-  std::cout<<t<<std::endl;
-
-  return ret;
-}
-
-
-int main(int argc, char** argv)
-{
-  tuple<float,int,double,char,std::string> tuple_;
-
-  test(tuple_);
-  test(static_cast<tuple<float,int,double,char,std::string>& >(tuple_));
-  test(static_cast<const tuple<float,int,double,char,std::string>&>(tuple_));
-  exit(copyTest()+iteratorTupleTest()+referenceTest()+lessTest()
-       +pointerTest()+constPointerTest()+tuple_tr1_test());
-
-}
diff --git a/common/test/utilitytest.cc b/common/test/utilitytest.cc
deleted file mode 100644
index db02f1fc8..000000000
--- a/common/test/utilitytest.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#include <dune/common/tuples.hh>
-#include <dune/common/utility.hh>
-#include <iostream>
-
-
-
-template<class T>
-struct Eval
-{
-  typedef void* Type;
-};
-
-struct Counter {
-  Counter() : result_(0) {}
-
-  template <class T1>
-  void visit(T1 elem) { ++result_; }
-
-  template <class T1, class T2>
-  void visit(T1 elem, T2 elem1) { ++(++result_); }
-  int result_;
-};
-
-
-int main(int argc, char** argv)
-{
-
-  typedef Dune::tuple<int*,double*,long*,char*> PointerTuple;
-
-  Dune::tuple<int*,double*,long*,char*> pointers = Dune::NullPointerInitialiser<PointerTuple>::apply();
-  int ret=0;
-
-  if(Dune::get<0>(pointers)!=0) {
-    std::cerr<<"First pointer not null"<<std::endl;
-    ret=1;
-  }
-  if(Dune::get<1>(pointers)!=0) {
-    std::cerr<<"Second pointer not null"<<std::endl;
-    ret=2;
-  }
-
-  if(Dune::get<2>(pointers)!=0) {
-    std::cerr<<"Third pointer not null"<<std::endl;
-    ret=3;
-  }
-
-  if(Dune::get<3>(pointers)!=0) {
-    std::cerr<<"Fourth pointer not null"<<std::endl;
-    ret=4;
-  }
-
-  int i = 3;
-  int *ii; ii = &i;
-  double d; d = 2;
-  long l = 4;
-  char c = 's';
-
-  typedef Dune::tuple<int*,char*,long*,char*> PointerTuple1;
-
-  PointerTuple1 pointers1(&i,&c,&l,&c);
-
-
-  if(static_cast<size_t>(Dune::Length<PointerTuple>::value) != static_cast<size_t>(Dune::tuple_size<PointerTuple>::value)) {
-    std::cerr<<"Length and size do not match!"<<std::endl;
-  }
-
-  Counter count;
-  Dune::ForEachValue<PointerTuple> forEach(pointers);
-
-  forEach.apply(count);
-  std::cout << "Number of elements is: " << count.result_ << std::endl;
-
-
-
-  Dune::ForEachValuePair<PointerTuple,PointerTuple1> foreach1(pointers, pointers1);
-
-  foreach1.apply(count);
-
-  if(Dune::At<2>::get(pointers)!=Dune::get<1>(pointers)) {
-    ret+=10;
-    std::cerr<<"at inconsistent!"<<std::endl;
-  }
-
-  PointerTuple1 p(new int(), new char(), new long(), new char());
-
-  typedef Dune::ForEachType<Eval,PointerTuple1>::Type ConvertedType;
-  Dune::PointerPairDeletor<PointerTuple1>::apply(p);
-
-  return ret;
-}
diff --git a/common/timer.hh b/common/timer.hh
deleted file mode 100644
index 9653c77f6..000000000
--- a/common/timer.hh
+++ /dev/null
@@ -1,92 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_TIMER_HH
-#define DUNE_TIMER_HH
-
-#ifndef TIMER_USE_STD_CLOCK
-// headers for getrusage(2)
-#include <sys/resource.h>
-#endif
-
-#include <ctime>
-
-// headers for stderror(3)
-#include <cstring>
-
-// access to errno in C++
-#include <cerrno>
-
-#include "exceptions.hh"
-
-namespace Dune {
-
-  /** @addtogroup Common
-     @{
-   */
-
-  /*! \file
-      \brief A simple timing class.
-   */
-
-  /** \brief %Exception thrown by the Timer class */
-  class TimerError : public SystemError {} ;
-
-
-  /** \brief A simple stop watch
-
-     This class reports the elapsed user-time, i.e. time spent computing,
-     after the last call to Timer::reset(). The results are seconds and
-     fractional seconds. Note that the resolution of the timing depends
-     on your OS kernel which should be somewhere in the milisecond range.
-
-     The class is basically a wrapper for the libc-function getrusage()
-
-   */
-  class Timer
-  {
-  public:
-    //! A new timer, start immediately
-    Timer () throw(TimerError)
-    {
-      reset();
-    }
-
-    //! Reset timer
-    void reset() throw (TimerError)
-    {
-#ifdef TIMER_USE_STD_CLOCK
-      cstart = std::clock();
-#else
-      rusage ru;
-      if (getrusage(RUSAGE_SELF, &ru))
-        DUNE_THROW(TimerError, strerror(errno));
-      cstart = ru.ru_utime;
-#endif
-    }
-
-    //! Get elapsed user-time in seconds
-    double elapsed () const throw (TimerError)
-    {
-#ifdef TIMER_USE_STD_CLOCK
-      return (std::clock()-cstart) / static_cast<double>(CLOCKS_PER_SEC);
-#else
-      rusage ru;
-      if (getrusage(RUSAGE_SELF, &ru))
-        DUNE_THROW(TimerError, strerror(errno));
-      return 1.0 * (ru.ru_utime.tv_sec - cstart.tv_sec) + (ru.ru_utime.tv_usec - cstart.tv_usec) / (1000.0 * 1000.0);
-#endif
-    }
-
-  private:
-#ifdef TIMER_USE_STD_CLOCK
-    std::clock_t cstart;
-#else
-    struct timeval cstart;
-#endif
-  }; // end class Timer
-
-  /** @} end documentation */
-
-} // end namespace
-
-#endif
diff --git a/common/tuples.hh b/common/tuples.hh
deleted file mode 100644
index 4692b3d69..000000000
--- a/common/tuples.hh
+++ /dev/null
@@ -1,1100 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-// $Id$
-#ifndef DUNE_TUPLES_HH
-#define DUNE_TUPLES_HH
-
-#include <ostream>
-#include "typetraits.hh"
-#include "static_assert.hh"
-
-#ifdef HAVE_TUPLE
-#include <tuple>
-#elif defined HAVE_TR1_TUPLE
-#include <tr1/tuple>
-#endif
-
-namespace Dune {
-  /** @addtogroup Common
-   *
-   * @{
-   */
-  /**
-   * @file
-   * @brief Contains classes that implement tuples.
-   *
-   * This a refined implementation of the approach defined in
-   * in the article &quot;Tuples and multiple return values
-   * in C++&quot; of Jaakko J&auml;rvi (Turku Centre of Computer
-   * Science, TUCS Technical Report No 249, March 1999,
-   * ISBN 952-12-0401-X, ISSN 1239-1891) available from the
-   * <a href="http://www.tucs.fi/publications/">TUCS publications archive</a>
-   * @author Markus Blatt
-   */
-
-
-  template<class T>
-  struct TupleAccessTraits
-  {
-    typedef typename ConstantVolatileTraits<T>::ConstType& ConstType;
-    typedef T& NonConstType;
-    typedef const typename ConstantVolatileTraits<T>::UnqualifiedType& ParameterType;
-  };
-
-  template<class T>
-  struct TupleAccessTraits<T*>
-  {
-    typedef typename ConstantVolatileTraits<T>::ConstType* ConstType;
-    typedef T* NonConstType;
-    typedef T* ParameterType;
-  };
-
-  template<class T>
-  struct TupleAccessTraits<T&>
-  {
-    typedef typename ConstantVolatileTraits<T>::ConstType& ConstType;
-    typedef T& NonConstType;
-    typedef T& ParameterType;
-  };
-
-#ifdef HAVE_TUPLE
-  using std::tuple;
-#elif defined HAVE_TR1_TUPLE
-  using std::tr1::tuple;
-#else
-  /**
-   * @brief An empty class.
-   */
-  struct Nil
-  {};
-
-  namespace
-  {
-    inline const Nil nullType()
-    {
-      return Nil();
-    }
-  }
-
-  /**
-   * @brief A tuple consisting of two objects.
-   *
-   * This is similar to std::pair
-   */
-  template<typename T1, typename TT>
-  struct Pair
-  {
-    /**
-     * @brief The type of the first field.
-     */
-    typedef T1 Type1;
-
-    /**
-     * @brief The type of the second field.
-     */
-    typedef TT Type2;
-    //     enum{
-    //     /**
-    //      * @brief The number of values we hold.
-    //      */
-    //       values = 2;
-    //     };
-
-    /**
-     * @brief Constructor
-     *
-     * @param t1 The value of the first field.
-     * @param t2 The value of the second field.
-     */
-    template<typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    Pair(typename TupleAccessTraits<T1>::ParameterType t1, T2& t2, T3& t3, T4& t4, T5& t5,
-         T6& t6, T7& t7, T8& t8, T9& t9);
-
-    /**
-     * @brief Constructor
-     *
-     * @param t1 The value of the first field.
-     * @param t2 The value of the second field.
-     */
-    Pair(typename TupleAccessTraits<Type1>::ParameterType t1, TT& t2);
-
-    Pair();
-
-    /**
-     * @brief Copy Constructor for implicit type conversion
-     * @param other The tuple to copy.
-     */
-    template<typename U1, typename U2>
-    Pair(const Pair<U1,U2>& other);
-
-    /**
-     * @brief Assignment operator for implicit type conversion
-     * @param other The tuple to assign.
-     */
-    template<typename U1, typename U2>
-    Pair& operator=(const Pair<U1,U2>& other);
-
-    Pair& operator=(const Pair& other);
-
-    /**
-     * @brief Get the first value
-     * @return The first value
-     */
-    typename TupleAccessTraits<Type1>::NonConstType first();
-
-    /**
-     * @brief Get the first value
-     * @return The first value
-     */
-    typename TupleAccessTraits<Type1>::ConstType
-    first() const;
-
-    /**
-     * @brief Get the second value
-     * @return The second value
-     */
-    typename TupleAccessTraits<Type2>::NonConstType
-    second();
-
-    /**
-     * @brief Get the second value
-     * @return The second value
-     */
-    typename TupleAccessTraits<Type2>::ConstType
-    second() const;
-
-    /** @brief The value of the first field. */
-    Type1 first_;
-    /** @brief The value of the second field. */
-    Type2 second_;
-
-  };
-
-  /**
-   * @brief A tuple consisting of one object.
-   * Specialization of Pair that really is a single value.
-   */
-  template<typename T1>
-  struct Pair<T1,Nil>
-  {
-    /**
-     * @brief The type of the first field.
-     */
-    typedef T1 Type1;
-
-    /**
-     * @brief The type of the (non-existent) second field is Nil.
-     * This typedef is useful in template metaprogramming, since it allows
-     * you to specialise for Nil instead of Pair<T, Nil>
-     */
-    typedef Nil Type2;
-
-    /**
-     * @brief Constructor.
-     * @param t1 The values for the first field.
-     * @param t2 The value for the second field.
-     */
-    Pair(typename TupleAccessTraits<T1>::ParameterType first, const Nil&, const Nil&, const Nil&, const Nil&,
-         const Nil&, const Nil&, const Nil&, const Nil&);
-
-    /**
-     * @brief Constructor.
-     * @param t1 The values for the first field.
-     * @param t2 The value for the second field.
-     */
-    Pair(typename TupleAccessTraits<T1>::ParameterType first,
-         const Nil&);
-
-    Pair();
-
-    /**
-     * @brief Copy constructor for type conversion.
-     */
-    template<typename T2>
-    Pair(const Pair<T2,Nil>& other);
-
-    /**
-     * @brief Assignment operator for type conversion.
-     */
-    template<typename T2>
-    Pair& operator=(const Pair<T2,Nil>& other);
-
-    /**
-     * @brief Assignment operator.
-     */
-    Pair& operator=(const Pair& other);
-
-    /**
-     * @brief Get the first value
-     * @return The first value
-     */
-    typename TupleAccessTraits<Type1>::NonConstType
-    first();
-
-    /**
-     * @brief Get the first value
-     * @return The first value
-     */
-    typename TupleAccessTraits<Type1>::ConstType
-    first() const;
-
-    /** @brief The value of the first field.*/
-    Type1 first_;
-  };
-
-
-  /**
-   * @brief Converts the Tuple to a list of pairs.
-   */
-  template<typename T1, typename T2, typename T3, typename T4, typename T5,
-      typename T6, typename T7, typename T8, typename T9>
-  struct TupleToPairs
-  {
-    typedef Pair<T1, typename TupleToPairs<T2,T3,T4,T5,T6,T7,T8,T9,Nil>::Type > Type;
-  };
-
-  /**
-   * @brief Specialization for a tuple consisting only of one type.
-   */
-  template<typename T1>
-  struct TupleToPairs<T1,Nil,Nil,Nil,Nil,Nil,Nil,Nil,Nil>
-  {
-    typedef Pair<T1,Nil> Type;
-  };
-
-  /**
-   * @brief A Tuple of objects.
-   *
-   * A maximum of 9 objects is supported.
-   *
-   * Use the following construction to access the individual elements.
-     \code
-      tuple<std::string, float*, int> my_tuple;
-
-      std:string& s = get<0>(my_tuple);
-      float*      p = get<1>(my_tuple);
-
-      // Access the third element in a generic way
-      typedef tuple_element<2, tuple<std::string, float*, int> >::type Type;
-      Type&       i = get<2>(my_tuple);
-     \endcode
-   */
-  template<typename T1, typename T2 = Nil, typename T3 = Nil,
-      typename T4 = Nil, typename T5 = Nil,typename T6 = Nil,
-      typename T7 = Nil, typename T8 = Nil, typename T9 = Nil>
-  class tuple : public TupleToPairs<T1,T2,T3,T4,T5,T6,T7,T8,T9>::Type
-  {
-  public:
-    //! Type of the first Pair defining the Tuple
-    typedef typename TupleToPairs<T1,T2,T3,T4,T5,T6,T7,T8,T9>::Type FirstPair;
-
-    tuple()
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1)
-      : FirstPair(t1, nullType(), nullType(), nullType(),
-                  nullType(), nullType(), nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2)
-      : FirstPair(t1, t2, nullType(), nullType(),
-                  nullType(), nullType(), nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3)
-      : FirstPair(t1, t2, t3, nullType(),
-                  nullType(), nullType(), nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4)
-      : FirstPair(t1, t2, t3, t4,
-                  nullType(), nullType(), nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4,
-          typename TupleAccessTraits<T5>::ParameterType t5)
-      : FirstPair(t1, t2, t3, t4,
-                  t5, nullType(), nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4,
-          typename TupleAccessTraits<T5>::ParameterType t5,
-          typename TupleAccessTraits<T6>::ParameterType t6)
-      : FirstPair(t1, t2, t3, t4,
-                  t5, t6, nullType(), nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4,
-          typename TupleAccessTraits<T5>::ParameterType t5,
-          typename TupleAccessTraits<T6>::ParameterType t6,
-          typename TupleAccessTraits<T7>::ParameterType t7)
-      : FirstPair(t1, t2, t3, t4,
-                  t5, t6, t7, nullType(),
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4,
-          typename TupleAccessTraits<T5>::ParameterType t5,
-          typename TupleAccessTraits<T6>::ParameterType t6,
-          typename TupleAccessTraits<T7>::ParameterType t7,
-          typename TupleAccessTraits<T8>::ParameterType t8)
-      : FirstPair(t1, t2, t3, t4,
-                  t5, t6, t7, t8,
-                  nullType())
-    {}
-
-    tuple(typename TupleAccessTraits<T1>::ParameterType t1,
-          typename TupleAccessTraits<T2>::ParameterType t2,
-          typename TupleAccessTraits<T3>::ParameterType t3,
-          typename TupleAccessTraits<T4>::ParameterType t4,
-          typename TupleAccessTraits<T5>::ParameterType t5,
-          typename TupleAccessTraits<T6>::ParameterType t6,
-          typename TupleAccessTraits<T7>::ParameterType t7,
-          typename TupleAccessTraits<T8>::ParameterType t8,
-          typename TupleAccessTraits<T9>::ParameterType t9)
-      : FirstPair(t1, t2, t3, t4, t5, t6, t7, t8, t9)
-    {}
-
-    template<class U1, class U2>
-    tuple& operator=(const Pair<U1,U2>& other)
-    {
-      FirstPair::operator=(other);
-      return *this;
-    }
-  };
-
-#endif
-
-#ifdef HAVE_TUPLE
-  using std::tuple_element;
-#elif defined HAVE_TR1_TUPLE
-  using std::tr1::tuple_element;
-#else
-  /**
-   * @brief Get the type of the N-th element of the tuple.
-   */
-  template<int N, class Tuple>
-  struct tuple_element
-  {
-    /**
-     * @brief The type of the N-th element of the tuple.
-     */
-    typedef typename tuple_element<N,typename Tuple::FirstPair>::type type;
-    typedef typename tuple_element<N,typename Tuple::FirstPair>::type Type;
-  };
-
-  template<int N, typename T1, typename T2>
-  struct tuple_element<N,Pair<T1,T2> >
-  {
-    /**
-     * @brief The type of the N-th element of the tuple.
-     */
-    typedef typename tuple_element<N-1,T2>::Type type;
-    typedef typename tuple_element<N-1,T2>::Type Type;
-  };
-
-  /**
-   * @brief Get the type of the first element of the tuple.
-   */
-  template<typename T1, typename T2>
-  struct tuple_element<0, Pair<T1,T2> >
-  {
-    /**
-     * @brief The type of the first element of the tuple.
-     */
-    typedef T1 type;
-    typedef T1 Type;
-  };
-
-#endif
-
-  template< int N, class T >
-  struct ElementType
-  {
-    typedef typename tuple_element< N, T > :: type Type DUNE_DEPRECATED;
-  };
-
-#if defined HAVE_TUPLE || defined HAVE_TR1_TUPLE
-#ifdef HAVE_TUPLE
-  #define TUPLE_NS std
-  using std::get;
-#elif defined HAVE_TR1_TUPLE
-  #define TUPLE_NS std::tr1
-  using std::tr1::get;
-#endif
-
-  // for backwards compatibility
-  template<int i>
-  struct Element {
-    template<typename T1>
-    static typename TupleAccessTraits<typename tuple_element<i,T1>::type>::NonConstType get(T1& t)
-    {
-      return TUPLE_NS::get<i>(t);
-    }
-
-    template<typename T1>
-    static typename TupleAccessTraits<typename tuple_element<i,T1>::type>::ConstType get(const T1& t)
-    {
-      return TUPLE_NS::get<i>(t);
-    }
-  };
-  #undef TUPLE_NS
-
-#else
-  /**
-   * @brief Get the N-th element of a tuple.
-   */
-  template<int N>
-  struct Element
-  {
-    /**
-     * @brief Get the N-th element of the tuple.
-     * @param tuple The tuple whose N-th element we want.
-     * @return The N-th element of the tuple.
-     */
-    template<typename T1, typename T2>
-    static typename TupleAccessTraits<
-        typename tuple_element<N,Pair<T1,T2> >::type
-        >::NonConstType
-    get(Pair<T1,T2>& tuple)
-    {
-      return Element<N-1>::get(tuple.second());
-    }
-
-    /**
-     * @brief Get the N-th element of the tuple.
-     * @param tuple The tuple whose N-th element we want.
-     * @return The N-th element of the tuple.
-     */
-    template<typename T1, typename T2>
-    static typename TupleAccessTraits<
-        typename tuple_element<N,Pair<T1,T2> >::type
-        >::ConstType
-    get(const Pair<T1,T2>& tuple)
-    {
-      return Element<N-1>::get(tuple.second());
-    }
-  };
-
-  /**
-   * @brief Get the first element of a tuple.
-   */
-  template<>
-  struct Element<0>
-  {
-    /**
-     * @brief Get the first element of the tuple.
-     * @param tuple The tuple whose first element we want.
-     * @return The first element of the tuple.
-     */
-    template<typename T1, typename T2>
-    static typename TupleAccessTraits<T1>::NonConstType get(Pair<T1,T2>& tuple)
-    {
-      return tuple.first();
-    }
-
-    /**
-     * @brief Get the first element of the tuple.
-     * @param tuple The tuple whose first element we want.
-     * @return The first element of the tuple.
-     */
-    template<typename T1, typename T2>
-    static typename TupleAccessTraits<T1>::ConstType get(const Pair<T1,T2>& tuple)
-    {
-      return tuple.first();
-    }
-  };
-
-  template<int i, typename T1, typename T2, typename T3, typename T4,
-      typename T5, typename T6, typename T7, typename T8, typename T9>
-  typename TupleAccessTraits<typename tuple_element<i, tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::type>
-  ::NonConstType
-  get(tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-  {
-    return Element<i>::get(t);
-  }
-
-  template<int i, typename T1, typename T2, typename T3, typename T4,
-      typename T5, typename T6, typename T7, typename T8, typename T9>
-  typename TupleAccessTraits<typename tuple_element<i, tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::type>
-  ::ConstType
-  get(const tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-  {
-    return Element<i>::get(t);
-  }
-
-#endif
-
-#ifdef HAVE_TUPLE
-  using std::tuple_size;
-#elif defined HAVE_TR1_TUPLE
-  using std::tr1::tuple_size;
-#else
-  /**
-   * @brief Template meta_programm to query the size of a tuple
-   *
-   */
-  template<class T>
-  struct tuple_size
-  {
-    enum {
-      // @brief The number of Elements in the tuple.
-      value=tuple_size<typename T::FirstPair>::value
-    };
-
-
-  };
-
-  template<typename T1, typename T2>
-  struct tuple_size<Pair<T1,T2> >
-  {
-    enum { value=1+tuple_size<T2>::value};
-  };
-
-
-  template<typename T1>
-  struct tuple_size<Pair<T1,Nil> >
-  {
-    enum { value=1};
-  };
-
-  template<>
-  struct tuple_size<Pair<Nil,Nil> >
-  {
-    enum { value=0};
-  };
-#endif
-  template<typename T>
-  struct Size : public tuple_size<T>
-  {};
-
-
-#ifdef HAVE_TUPLE
-  using std::tie;
-  using std::make_tuple;
-#elif defined HAVE_TR1_TUPLE
-  using std::tr1::tie;
-  using std::tr1::make_tuple;
-#endif
-
-
-  template<int i>
-  struct tuple_writer
-  {
-    template<class T>
-    static std::ostream& put(std::ostream& os, const T& t, const char* delim=", ")
-    {
-      return tuple_writer<i-1>::put(os,t,delim)<<delim<<get<i-1>(t);
-    }
-  };
-
-  template<>
-  struct tuple_writer<1>
-  {
-    template<class T>
-    static std::ostream& put(std::ostream& os, const T& t, const char* delim=", ")
-    {
-      return os<<get<0>(t);
-    }
-  };
-
-  template<>
-  struct tuple_writer<0>
-  {
-    template<class T>
-    static std::ostream& put(std::ostream& os, const T& t, const char* delim=", ")
-    {
-      return os;
-    }
-  };
-
-#if defined HAVE_TUPLE || defined HAVE_TR1_TUPLE
-  /**
-   * \brief Print a tuple.
-   */
-  template<typename T1>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1> & t)
-  {
-    typedef tuple<T1> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2> & t)
-  {
-    typedef tuple<T1,T2> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3> & t)
-  {
-    typedef tuple<T1,T2,T3> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4> & t)
-  {
-    typedef tuple<T1,T2,T3,T4> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5,T6> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5,T6> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5,T6,T7> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5,T6,T7> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
-      typename T8>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5,T6,T7,T8> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5,T6,T7,T8> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
-      typename T8, typename T9>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
-      typename T8, typename T9, typename T10>
-  inline std::ostream& operator<<( std::ostream& os, const tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> & t)
-  {
-    typedef tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> TupleT;
-    return tuple_writer<tuple_size<TupleT>::value>::put(os, t);
-  }
-
-#else
-  /**
-   * @brief Equality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1, typename T2, typename U1, typename U2>
-  inline bool operator==(const Pair<T1,T2>& tuple1, const Pair<U1,U2>& tuple2)
-  {
-    return (tuple1.first()==tuple2.first() && tuple1.second()==tuple2.second());
-  }
-
-  /**
-   * @brief Inequality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1, typename T2, typename U1, typename U2>
-  inline bool operator!=(const Pair<T1,T2>& tuple1, const Pair<U1,U2>& tuple2)
-  {
-    return (tuple1.first()!=tuple2.first() || tuple1.second()!=tuple2.second());
-  }
-
-  /**
-   * @brief Less operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1, typename T2, typename U1, typename U2>
-  inline bool operator<(const Pair<T1,T2>& tuple1, const Pair<U1,U2>& tuple2)
-  {
-    return tuple1.first() < tuple2.first()
-           || (tuple1.first() == tuple2.first() && tuple1.second() < tuple2.second());
-  }
-
-  /**
-   * @brief Equality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1,typename U1>
-  inline bool operator==(const Pair<T1,Nil>& tuple1, const Pair<U1,Nil>& tuple2)
-  {
-    return (tuple1.first()==tuple2.first());
-  }
-
-  /**
-   * @brief Inequality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1, typename U1>
-  inline bool operator!=(const Pair<T1,Nil>& tuple1, const Pair<U1,Nil>& tuple2)
-  {
-    dune_static_assert( (IsInteroperable<T1,U1>::value),
-                        "T1 and U1 have to be interoperable, i.e., either "
-                        "conversion from one to the other must exist." );
-    return (tuple1.first()!=tuple2.first());
-  }
-
-  /**
-   * @brief Less operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple,
-   */
-  template<typename T1, typename U1>
-  inline bool operator<(const Pair<T1,Nil>& tuple1, const Pair<U1,Nil>& tuple2)
-  {
-    return (tuple1.first()<tuple2.first());
-  }
-
-  /**
-   * @brief Equality comparison operator for tuples.
-   *
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple.
-   * @return False as the type of the compared objects are different.
-   */
-  template<typename T1,typename U1, typename U2>
-  inline bool operator==(const Pair<T1,Nil>& tuple1, const Pair<U1,U2>& tuple2)
-  {
-    return false;
-  }
-
-  /**
-   * @brief Inequality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple.
-   * @return True as the type of the compared objects are different.
-   */
-  template<typename T1, typename U1, typename U2>
-  inline bool operator!=(const Pair<T1,Nil>& tuple1, const Pair<U1,U2>& tuple2)
-  {
-    return true;
-  }
-
-
-  /**
-   * @brief Equality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple.
-   * @return False as the type of the compared objects are different.
-   */
-  template<typename T1, typename T2, typename U1>
-  inline bool operator==(const Pair<T1,T2>& tuple1, const Pair<U1,Nil>& tuple2)
-  {
-    return false;
-  }
-
-  /**
-   * @brief Inequality comparison operator for tuples.
-   * @param tuple1 The first tuple.
-   * @param tuple2 The second tuple.
-   * @return True as the type of the compared objects are different.
-   */
-  template<typename T1, typename T2, typename U1>
-  inline bool operator!=(const Pair<T1,T2>& tuple1, const Pair<U1,Nil>& tuple2)
-  {
-    return true;
-  }
-
-  /**
-   * @brief Create a tuple and initialize it.
-   * @param first The value of the first field.
-   * @param second The value of the second field.
-   */
-  template<typename T1, typename T2>
-  inline Pair<T1,T2> makePair(const T1& first, const T2& second)
-  {
-    return Pair<T1,T2>(first, second);
-  }
-
-  /**
-   * @brief Print aa pair or  tuple.
-   */
-  template<typename T1, typename T2>
-  inline std::ostream& operator<<(std::ostream& os, const Pair<T1,T2>& pair)
-  {
-    os<<pair.first()<<" "<<pair.second();
-    return os;
-  }
-
-  template<typename T1>
-  inline std::ostream& operator<<(std::ostream& os, const Pair<T1,Nil>& pair)
-  {
-    os<<pair.first();
-    return os;
-  }
-
-  template<class T1>
-  inline tuple<T1&> tie(T1& t1) {
-    return tuple<T1&> (t1);
-  }
-
-  template<class T1, class T2>
-  inline tuple<T1&, T2&> tie(T1& t1, T2& t2) {
-    return tuple<T1&, T2&> (t1, t2);
-  }
-
-  template<class T1, class T2, class T3>
-  inline tuple<T1&, T2&, T3&> tie(T1& t1, T2& t2, T3& t3) {
-    return tuple<T1&, T2&, T3&> (t1, t2, t3);
-  }
-
-  template<class T1, class T2, class T3, class T4>
-  inline tuple<T1&, T2&, T3&, T4&> tie(T1& t1, T2& t2, T3& t3, T4& t4) {
-    return tuple<T1&, T2&, T3&, T4&> (t1, t2, t3, t4);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5>
-  inline tuple<T1&, T2&, T3&, T4&, T5&>
-  tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) {
-    return tuple<T1&, T2&, T3&, T4&, T5&> (t1, t2, t3, t4, t5);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6>
-  inline tuple<T1&, T2&, T3&, T4&, T5&, T6&>
-  tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6) {
-    return tuple<T1&, T2&, T3&, T4&, T5&, T6&> (t1, t2, t3, t4, t5, t6);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-  inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&>
-  tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7) {
-    return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&> (t1, t2, t3, t4, t5, t6, t7);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
-      class T8>
-  inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
-  tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8) {
-    return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
-             (t1, t2, t3, t4, t5, t6, t7, t8);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
-      class T8, class T9>
-  inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
-  tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8, T9& t9) {
-    return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
-             (t1, t2, t3, t4, t5, t6, t7, t8, t9);
-  }
-
-  template<class T1>
-  inline tuple<T1> make_tuple(const T1& t1) {
-    return tuple<T1> (t1);
-  }
-
-  template<class T1, class T2>
-  inline tuple<T1, T2> make_tuple(const T1& t1, const T2& t2) {
-    return tuple<T1, T2> (t1, t2);
-  }
-
-  template<class T1, class T2, class T3>
-  inline tuple<T1, T2, T3> make_tuple(const T1& t1, const T2& t2, const T3& t3) {
-    return tuple<T1, T2, T3> (t1, t2, t3);
-  }
-
-  template<class T1, class T2, class T3, class T4>
-  inline tuple<T1, T2, T3, T4> make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
-    return tuple<T1, T2, T3, T4> (t1, t2, t3, t4);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5>
-  inline tuple<T1, T2, T3, T4, T5>
-  make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5) {
-    return tuple<T1, T2, T3, T4, T5> (t1, t2, t3, t4, t5);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6>
-  inline tuple<T1, T2, T3, T4, T5, T6>
-  make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6) {
-    return tuple<T1, T2, T3, T4, T5, T6> (t1, t2, t3, t4, t5, t6);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-  inline tuple<T1, T2, T3, T4, T5, T6, T7>
-  make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6,
-             const T7& t7) {
-    return tuple<T1, T2, T3, T4, T5, T6, T7> (t1, t2, t3, t4, t5, t6, t7);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
-      class T8>
-  inline tuple<T1, T2, T3, T4, T5, T6, T7, T8>
-  make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6,
-             const T7& t7, const T8& t8) {
-    return tuple<T1, T2, T3, T4, T5, T6, T7, T8>
-             (t1, t2, t3, t4, t5, t6, t7, t8);
-  }
-
-  template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
-      class T8, class T9>
-  inline tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>
-  make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6,
-             const T7& t7, const T8& t8, const T9& t9) {
-    return tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>
-             (t1, t2, t3, t4, t5, t6, t7, t8, t9);
-  }
-
-  template<typename T1, typename TT>
-  template<typename T2, typename T3, typename T4, typename T5,
-      typename T6, typename T7, typename T8, typename T9>
-  inline Pair<T1,TT>::Pair(typename TupleAccessTraits<T1>::ParameterType first,
-                           T2& t2, T3& t3, T4& t4, T5& t5,
-                           T6& t6, T7& t7, T8& t8, T9& t9)
-    : first_(first), second_(t2,t3,t4,t5,t6,t7,t8,t9, nullType())
-  {}
-
-  template <typename T1, typename TT>
-  inline Pair<T1, TT>::Pair(typename TupleAccessTraits<T1>::ParameterType first, TT& second)
-    : first_(first), second_(second)
-  {}
-
-  template<typename T1, typename T2>
-  inline Pair<T1,T2>::Pair()
-    : first_(), second_()
-  {}
-
-  template<typename T1, typename T2>
-  template<typename U1, typename U2>
-  inline Pair<T1,T2>::Pair(const Pair<U1,U2>& other)
-    : first_(other.first_), second_(other.second_)
-  {}
-
-  template<typename T1, typename T2>
-  template<typename U1, typename U2>
-  inline Pair<T1,T2>& Pair<T1,T2>::operator=(const Pair<U1,U2>& other)
-  {
-    first_=other.first_;
-    second_=other.second_;
-    return *this;
-  }
-
-  template<typename T1, typename T2>
-  inline Pair<T1,T2>& Pair<T1,T2>::operator=(const Pair& other)
-  {
-    first_=other.first_;
-    second_=other.second_;
-    return *this;
-  }
-
-  template<typename T1, typename T2>
-  inline typename TupleAccessTraits<T1>::NonConstType
-  Pair<T1,T2>::first()
-  {
-    return first_;
-  }
-
-  template<typename T1, typename T2>
-  inline typename TupleAccessTraits<T1>::ConstType
-  Pair<T1,T2>::first() const
-  {
-    return first_;
-  }
-
-
-  template<typename T1, typename T2>
-  inline typename TupleAccessTraits<T2>::NonConstType
-  Pair<T1,T2>::second()
-  {
-    return second_;
-  }
-
-  template<typename T1, typename T2>
-  inline typename TupleAccessTraits<T2>::ConstType
-  Pair<T1,T2>::second() const
-  {
-    return second_;
-  }
-
-  template<typename T1>
-  inline Pair<T1,Nil>::Pair(typename TupleAccessTraits<T1>::ParameterType first,
-                            const Nil&, const Nil&, const Nil&, const Nil&,
-                            const Nil&, const Nil&, const Nil&, const Nil&)
-    : first_(first)
-  {}
-
-  template <typename T1>
-  inline Pair<T1, Nil>::Pair(typename TupleAccessTraits<T1>::ParameterType first,
-                             const Nil&)
-    : first_(first)
-  {}
-
-  template<typename T1>
-  inline Pair<T1,Nil>::Pair()
-    : first_()
-  {}
-
-  template<typename T1>
-  template<typename T2>
-  inline Pair<T1,Nil>::Pair(const Pair<T2,Nil>& other)
-    : first_(other.first_)
-  {}
-
-  template<typename T1>
-  template<typename T2>
-  Pair<T1,Nil>& Pair<T1,Nil>::operator=(const Pair<T2,Nil>& other)
-  {
-    first_ = other.first_;
-    return *this;
-  }
-
-
-  template<typename T1>
-  Pair<T1,Nil>& Pair<T1,Nil>::operator=(const Pair& other)
-  {
-    first_ = other.first_;
-    return *this;
-  }
-
-  template<typename T1>
-  inline typename TupleAccessTraits<T1>::NonConstType
-  Pair<T1,Nil>::first()
-  {
-    return first_;
-  }
-
-  template<typename T1>
-  inline typename TupleAccessTraits<T1>::ConstType
-  Pair<T1,Nil>::first() const
-  {
-    return first_;
-  }
-
-#endif
-}
-#endif
diff --git a/common/typetraits.hh b/common/typetraits.hh
deleted file mode 100644
index 176a06b8d..000000000
--- a/common/typetraits.hh
+++ /dev/null
@@ -1,340 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_TYPETRAITS_HH
-#define DUNE_TYPETRAITS_HH
-
-#if defined HAVE_TYPE_TRAITS
-#include <type_traits>
-#elif defined HAVE_TR1_TYPE_TRAITS
-#include <tr1/type_traits>
-#endif
-
-namespace Dune
-{
-
-  /**
-   * @file
-   * @brief Traits for type conversions and type information.
-   * @author Markus Blatt
-   */
-  /** @addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * @brief Just an empty class
-   */
-  struct Empty {};
-
-  /**
-   * @brief General type traits class to check whether type is reference or
-   * pointer type
-   */
-  template <typename T>
-  class TypeTraits
-  {
-  private:
-    template <class U>
-    struct PointerTraits {
-      enum { result = false };
-      typedef Empty PointeeType;
-    };
-
-    template <class U>
-    struct PointerTraits<U*> {
-      enum { result = true };
-      typedef U PointeeType;
-    };
-
-    template <class U> struct ReferenceTraits
-    {
-      enum { result = false };
-      typedef U ReferredType;
-    };
-
-    template <class U> struct ReferenceTraits<U&>
-    {
-      enum { result = true };
-      typedef U ReferredType;
-    };
-
-  public:
-    enum { isPointer = PointerTraits<T>::result };
-    typedef typename PointerTraits<T>::PointeeType PointeeType;
-
-    enum { isReference = ReferenceTraits<T>::result };
-    typedef typename ReferenceTraits<T>::ReferredType ReferredType;
-  };
-
-  /**
-   * @brief Determines wether a type is const or volatile and provides the
-   * unqualified types.
-   */
-  template<typename T>
-  struct ConstantVolatileTraits
-  {
-    enum {
-      /** @brief True if T has a volatile specifier. */
-      isVolatile=false,
-      /** @brief True if T has a const qualifier. */
-      isConst=false
-    };
-
-    /** @brief The unqualified type. */
-    typedef T UnqualifiedType;
-    /** @brief The const type. */
-    typedef const T ConstType;
-    /** @brief The const volatile type. */
-    typedef const volatile T ConstVolatileType;
-  };
-
-  template<typename T>
-  struct ConstantVolatileTraits<const T>
-  {
-    enum {
-      isVolatile=false, isConst=true
-    };
-    typedef T UnqualifiedType;
-    typedef const UnqualifiedType ConstType;
-    typedef const volatile UnqualifiedType ConstVolatileType;
-  };
-
-
-  template<typename T>
-  struct ConstantVolatileTraits<volatile T>
-  {
-    enum {
-      isVolatile=true, isConst=false
-    };
-    typedef T UnqualifiedType;
-    typedef const UnqualifiedType ConstType;
-    typedef const volatile UnqualifiedType ConstVolatileType;
-  };
-
-  template<typename T>
-  struct ConstantVolatileTraits<const volatile T>
-  {
-    enum {
-      isVolatile=true, isConst=true
-    };
-    typedef T UnqualifiedType;
-    typedef const UnqualifiedType ConstType;
-    typedef const volatile UnqualifiedType ConstVolatileType;
-  };
-
-  /** @brief Tests wether a type is volatile. */
-  template<typename T>
-  struct IsVolatile
-  {
-    enum {
-      /** @brief True if The type is volatile. */
-      value=ConstantVolatileTraits<T>::isVolatile
-    };
-  };
-
-  /** @brief Tests wether a type is constant. */
-  template<typename T>
-  struct IsConst
-  {
-    enum {
-      /** @brief True if The type is constant. */
-      value=ConstantVolatileTraits<T>::isConst
-    };
-  };
-
-  template<typename T, bool isVolatile>
-  struct RemoveConstHelper
-  {
-    typedef typename ConstantVolatileTraits<T>::UnqualifiedType Type;
-  };
-
-  template<typename T>
-  struct RemoveConstHelper<T,true>
-  {
-    typedef volatile typename ConstantVolatileTraits<T>::UnqualifiedType Type;
-  };
-
-#if defined HAVE_TYPE_TRAITS
-  using std::remove_const;
-#elif defined HAVE_TR1_TYPE_TRAITS
-  using std::tr1::remove_const;
-#else
-  /**
-   * @brief Removes a const qualifier while preserving others.
-   */
-  template<typename T>
-  struct remove_const
-  {
-    typedef typename RemoveConstHelper<T, IsVolatile<T>::value>::Type type;
-  };
-#endif
-
-  /**
-   * @brief Checks wether a type is derived from another.
-   *
-   * Inspired by
-   * <A HREF="http://www.kotiposti.net/epulkkin/instructive/base-class-determination.html"> this website</A>
-   */
-  template<class From, class To>
-  class Conversion
-  {
-    typedef char Small;
-    struct Big {char dummy[2];};
-    static Small test(To);
-    static Big test(...);
-    static From makeFrom();
-  public:
-    enum {
-      /** @brief True if the conversion exists. */
-      exists =  sizeof(test(makeFrom())) == sizeof(Small),
-      /** @brief Whether the conversion exists in both ways. */
-      isTwoWay = exists && Conversion<To,From>::exists,
-      /** @brief True if To and From are the same type. */
-      sameType = false
-    };
-  };
-
-  template <class From>
-  class Conversion<From, void>
-  {
-  public:
-    enum {
-      exists = false,
-      isTwoWay = false,
-      sameType = false
-    };
-  };
-
-  template <class To>
-  class Conversion<void, To>
-  {
-  public:
-    enum {
-      exists = false,
-      isTwoWay = false,
-      sameType = false
-    };
-  };
-
-  template<>
-  class Conversion< int, double >
-  {
-  public:
-    enum {
-      exists = true,
-      isTwoWay = false,
-      sameType = false
-    };
-  };
-
-  template<class T>
-  class Conversion<T,T>{
-  public:
-    enum { exists=true, isTwoWay=true, sameType=true};
-  };
-
-  /**
-   * @brief Checks wether two types are interoperable.
-   *
-   * Two types are interoperable if conversions in either directions
-   * exists.
-   */
-  template<class T1, class T2>
-  struct IsInteroperable
-  {
-    enum {
-      /**
-       * @brief True if either a conversion from T1 to T2 or vice versa
-       * exists.
-       */
-      value = Conversion<T1,T2>::exists || Conversion<T2,T1>::exists
-    };
-  };
-
-#ifdef HAVE_TYPE_TRAITS
-  using std::enable_if;
-#else
-  /**
-   * @brief Enable typedef if condition is met.
-   *
-   * Replacement implementation for compilers without this in the stl.
-   * Depending on the value of b the type T is provided as typedef type.
-   */
-  template<bool b, typename T=void>
-  struct enable_if
-  {
-    typedef T type;
-  };
-
-  template<typename T>
-  struct enable_if<false,T>
-  {};
-#endif
-
-
-  /**
-   * @brief Enable typedef if two types are interoperable.
-   *
-   * (also see IsInteroperable)
-   */
-  template<class T1, class T2, class Type>
-  struct EnableIfInterOperable
-    : public enable_if<IsInteroperable<T1,T2>::value, Type>
-  {};
-
-#if defined HAVE_TYPE_TRAITS
-  using std::is_same;
-#elif defined HAVE_TR1_TYPE_TRAITS
-  using std::tr1::is_same;
-#else
-  /**
-   * @brief Compile time test for testing whether
-   * two types are the same.
-   */
-  template<typename T1, typename T2>
-  struct is_same
-  {
-    //! Whether T1 is the same type as T2.
-    enum {
-      /* @brief Whether T1 is the same type as T2. */
-      value=false
-    };
-  };
-
-
-  template<typename T>
-  struct is_same<T,T>
-  {
-    enum { value=true};
-  };
-#endif
-
-  /**
-   * @brief Select a type based on a condition.
-   *
-   * If template parameter first is true T1 is selected
-   * otherwise T2 will be selected.
-   * The selected type id accessible through the typedef
-   * Type.
-   */
-  template<bool first, class T1, class T2>
-  struct SelectType
-  {
-    /**
-     * @brief The selected type.
-     *
-     * if first is true this will be type T1 and
-     * otherwise T2
-     */
-    typedef T1 Type;
-  };
-
-  template<class T1, class T2>
-  struct SelectType<false,T1,T2>
-  {
-    typedef T2 Type;
-  };
-  /** @} */
-}
-#endif
diff --git a/common/utility.hh b/common/utility.hh
deleted file mode 100644
index f481c74e5..000000000
--- a/common/utility.hh
+++ /dev/null
@@ -1,505 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_UTILITY_HH
-#define DUNE_UTILITY_HH
-
-#include "tuples.hh"
-
-namespace Dune {
-
-  /** @ addtogroup Common
-   *
-   * @{
-   */
-
-  /**
-   * @file
-   * @brief Contain utility classes which can be used with tuples.
-   */
-
-  /**
-   * @brief A helper template that initializes a tuple consisting of pointers
-   * to NULL.
-   *
-   * A tuple of NULL pointers may be useful when you use a tuple of pointers
-   * in a class which you can only initialise in a later stage.
-   */
-  template <class Tuple>
-  class NullPointerInitialiser {};
-
-  namespace
-  {
-    /**
-     * @brief Helper class for initialising null pointers.
-     *
-     * First template parameter is the tuple.
-     * Second templates parameter is the size of the tuple.
-     */
-    template<class T, int size>
-    struct InitialiserHelper
-    {};
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2,T3,T4,T5,T6,T7,T8,T9>,1>
-    {
-      static inline tuple<T1*,T2,T3,T4,T5,T6,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2,T3,T4,T5,T6,T7,T8,T9>(0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3,T4,T5,T6,T7,T8,T9>,2>
-    {
-      static inline tuple<T1*,T2*,T3,T4,T5,T6,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3,T4,T5,T6,T7,T8,T9>(0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4,T5,T6,T7,T8,T9>,3>
-    {
-      static inline tuple<T1*,T2*,T3*,T4,T5,T6,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4,T5,T6,T7,T8,T9>(0,0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5,T6,T7,T8,T9>,4>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5,T6,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5,T6,T7,T8,T9>(0,0,0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5*,T6,T7,T8,T9>,5>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5*,T6,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5*,T6,T7,T8,T9>(0,0,0,0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7,T8,T9>,6>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7,T8,T9>(0,0,0,0,0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8,T9>,7>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8,T9>(0,0,0,0,0,0,0);
-      }
-    };
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9>,8>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9>(0,0,0,0,0,0,0,0);
-      }
-    };
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct InitialiserHelper<tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9*>,9>
-    {
-      static inline tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9*> apply()
-      {
-        return tuple<T1*,T2*,T3*,T4*,T5*,T6*,T7*,T8*,T9*>(0,0,0,0,0,0,0,0,0);
-      }
-    };
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5,
-      typename T6, typename T7, typename T8, typename T9>
-  class NullPointerInitialiser<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >
-  {
-  public:
-    typedef tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> ResultType;
-
-    static inline ResultType apply()
-    {
-      return InitialiserHelper<ResultType, tuple_size<ResultType>::value>::apply();
-    }
-  };
-
-  /**
-   * @brief Deletes all objects pointed to in a tuple of pointers.
-   *
-   * \warning Pointers cannot be set to NULL, so calling the Deletor twice
-   * or accessing elements of a deleted tuple leads to unforeseeable results!
-   */
-  template <class Tuple>
-  struct PointerPairDeletor {};
-
-  namespace
-  {
-
-    template<class T, int s>
-    struct PointerDeletor
-    {};
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9, int s>
-    struct PointerDeletor<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,s>
-    {
-      static void apply(tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-      {
-
-        PointerDeletor<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,s-1>::apply(t);
-        delete get<s-1>(t);
-      }
-    };
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct PointerDeletor<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,0>
-    {
-      static void apply(tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-      {}
-    };
-  }
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5,
-      typename T6, typename T7, typename T8, typename T9>
-  struct PointerPairDeletor<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >
-  {
-    static void apply(tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-    {
-      PointerDeletor<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,
-          tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value>
-      ::apply(t);
-    }
-
-  };
-
-  /**
-   * @brief Helper template to calculate length of a tuple.
-   */
-  template <class Tuple>
-  struct Length {};
-
-  template<typename T1, typename T2, typename T3, typename T4, typename T5,
-      typename T6, typename T7, typename T8, typename T9>
-  struct Length<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >
-  {
-    enum {
-      value=tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value
-    };
-  };
-
-  namespace
-  {
-    /**
-     * @brief Helper class for getting a converted tuple.
-     *
-     * Eval describes the conversion policy, T is the tuple type
-     * and s is the size of the (sub) tuple, to process.
-     */
-    template<template <class> class Eval, typename T, int s>
-    struct ForEachTypeHelper
-    {};
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,0>
-    {
-      typedef tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> Type;
-    };
-
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,1>
-    {
-      typedef tuple<typename Eval<T1>::Type,T2,T3,T4,T5,T6,T7,T8,T9> Type;
-    };
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,2>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,T3,T4,T5,T6,T7,T8,T9> Type;
-    };
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,3>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          T4,T5,T6,T7,T8,T9> Type;
-    };
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,4>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,T5,T6,T7,T8,T9> Type;
-    };
-
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,5>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,typename Eval<T5>::Type,T6,T7,T8,T9> Type;
-    };
-
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,6>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,typename Eval<T5>::Type,typename Eval<T6>::Type,
-          T7,T8,T9> Type;
-    };
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,7>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,typename Eval<T5>::Type,typename Eval<T6>::Type,
-          typename Eval<T7>::Type,T8,T9> Type;
-    };
-
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,8>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,typename Eval<T5>::Type,typename Eval<T6>::Type,
-          typename Eval<T7>::Type,typename Eval<T8>::Type,T9> Type;
-    };
-
-    template<template <class> class Eval, typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    struct ForEachTypeHelper<Eval,tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>,9>
-    {
-      typedef tuple<typename Eval<T1>::Type,typename Eval<T2>::Type,typename Eval<T3>::Type,
-          typename Eval<T4>::Type,typename Eval<T5>::Type,typename Eval<T6>::Type,
-          typename Eval<T7>::Type,typename Eval<T8>::Type,typename Eval<T9>::Type> Type;
-    };
-  }
-
-
-  /**
-   * @brief Helper template to clone the type definition of a tuple with the
-   * storage types replaced by a user-defined rule.
-   *
-   * Suppose all storage types A_i in a tuple define a type A_i::B. You can
-   * build up a pair consisting of the types defined by A_i::B in the following
-   * way:
-     \code
-     template <class A>
-     struct MyEvaluator {
-     typedef typename A::B Type;
-     };
-
-     typedef ForEachType<MyEvaluator, ATuple>::Type BTuple;
-     \endcode
-   * Here, MyEvaluator is a helper struct that extracts the correct type from
-   * the storage types of the tuple defined by the tuple ATuple.
-   */
-  template <template <class> class TypeEvaluator, class TupleType>
-  struct ForEachType {
-    typedef typename ForEachTypeHelper<TypeEvaluator,TupleType,
-        tuple_size<TupleType>::value>::Type Type;
-
-  };
-
-  namespace
-  {
-    template<int i, typename T1,typename F>
-    struct Visitor
-    {
-      static inline void visit(F& func, T1& t1)
-      {
-        func.visit(get<tuple_size<T1>::value-i>(t1));
-        Visitor<i-1,T1,F>::visit(func, t1);
-      }
-    };
-
-    template<typename T1,typename F>
-    struct Visitor<0,T1,F>
-    {
-      static inline void visit(F& func, T1& t1)
-      {}
-    };
-
-    template<int i, typename T1, typename T2,typename F>
-    struct PairVisitor
-    {
-      static inline void visit(F& func, T1& t1, T2& t2)
-      {
-        func.visit(get<tuple_size<T1>::value-i>(t1), get<tuple_size<T2>::value-i>(t2));
-        PairVisitor<i-1,T1,T2,F>::visit(func, t1, t2);
-      }
-    };
-
-    template<typename T1, typename T2, typename F>
-    struct PairVisitor<0,T1,T2,F>
-    {
-      static inline void visit(F& func, T1& t1, T2& t2)
-      {}
-    };
-  }
-
-  /**
-   * @brief Helper template which implements iteration over all storage
-   * elements in a tuple.
-   *
-   * Compile-time constructs that allows to process all elements in a tuple.
-   * The exact operation performed on an element is defined by a function
-   * object, which needs to implement a visit method which is applicable to
-   * all storage elements of a tuple.
-   *
-   * The following example implements a function object which counts the
-   * elements in a tuple
-     \code
-     template <class T>
-     struct Counter {
-     Counter() : result_(0) {}
-
-     template <class T>
-     void visit(T& elem) { ++result_; }
-
-     int result_;
-     };
-     \endcode
-   * The number of elements in the tuple are stored in the member variable
-   * result_. The Counter can be used as follows, assuming a tuple t of type
-   * MyTuple is given:
-     \code
-     Counter c;
-     ForEachValue<MyTuple> forEach(t);
-
-     forEach.apply(c);
-     std::cout << "Number of elements is: " << c.result_ << std::endl;
-     \endcode
-   */
-  template <class TupleType>
-  class ForEachValue {
-  public:
-    //! \brief Constructor
-    //! \param tuple The tuple which we want to process.
-    ForEachValue(TupleType& tuple) : tuple_(tuple) {}
-
-    //! \brief Applies a function object to each storage element of the tuple.
-    //! \param f Function object.
-    template <class Functor>
-    void apply(Functor& f) {
-      Visitor<tuple_size<TupleType>::value,TupleType,Functor>::visit(f, tuple_);
-    }
-  private:
-    TupleType& tuple_;
-  };
-
-  //- Definition ForEachValuePair class
-  // Assertion: both tuples have the same length and the contained types are
-  // compatible in the sense of the applied function object
-  /**
-   * @brief Extension of ForEachValue to two tuples...
-   *
-   * This class provides the framework to process two tuples at once. It works
-   * the same as ForEachValue, just that the corresponding function object
-   * takes one argument from the first tuple and one argument from the second.
-   *
-   * \note You have to ensure that the two tuples you provide are compatible
-   * in the sense that they have the same length and that the objects passed
-   * to the function objects are related in meaningful way. The best way to
-   * enforce it is to build the second tuple from the existing first tuple
-   * using ForEachType.
-   */
-  template <class TupleType1, class TupleType2>
-  class ForEachValuePair {
-  public:
-    //! Constructor
-    //! \param t1 First tuple.
-    //! \param t2 Second tuple.
-    ForEachValuePair(TupleType1& t1, TupleType2& t2) :
-      tuple1_(t1),
-      tuple2_(t2)
-    {}
-
-    //! Applies the function object f to the pair of tuples.
-    //! \param f The function object to apply on the pair of tuples.
-    template <class Functor>
-    void apply(Functor& f) {
-      PairVisitor<tuple_size<TupleType1>::value,TupleType1,TupleType2,Functor>
-      ::visit(f, tuple1_, tuple2_);
-    }
-  private:
-    TupleType1& tuple1_;
-    TupleType2& tuple2_;
-  };
-
-  //- Reverse element access
-  /**
-   * @brief Type for reverse element access.
-   *
-   * Counterpart to ElementType for reverse element access.
-   */
-  template <int N, class Tuple>
-  struct AtType {
-    typename ElementType<Length<Tuple>::value - N - 1,
-        Tuple>::Type Type;
-  };
-
-  /**
-   * @brief Reverse element access.
-   *
-   * While Element<...> gives you the arguments beginning at the front of a
-   * tuple, At<...> starts at the end, which may be more convenient, depending
-   * on how you built your tuple.
-   */
-  template <int N>
-  struct At
-  {
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    static typename TupleAccessTraits<
-        typename tuple_element<tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value - N - 1,
-            tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::type>::NonConstType
-    get(tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-    {
-      return Dune::get<tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value - N - 1>(t);
-    }
-
-    template<typename T1, typename T2, typename T3, typename T4, typename T5,
-        typename T6, typename T7, typename T8, typename T9>
-    static typename TupleAccessTraits<
-        typename tuple_element<tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value - N - 1,
-            tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::type>::ConstType
-    get(const tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9>& t)
-    {
-      return Dune::get<tuple_size<tuple<T1,T2,T3,T4,T5,T6,T7,T8,T9> >::value - N - 1>(t);
-    }
-  };
-
-}
-
-#endif
diff --git a/common/version.hh b/common/version.hh
deleted file mode 100644
index 349ce8b61..000000000
--- a/common/version.hh
+++ /dev/null
@@ -1,32 +0,0 @@
-// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-// vi: set et ts=4 sw=2 sts=2:
-#ifndef DUNE_VERSION_HH
-#define DUNE_VERSION_HH
-
-#define DUNE_VERSION_JOIN(module,type) module ## _VERSION_ ## type
-
-#define DUNE_VERSION_EQUAL(module,major,minor) \
-  ((DUNE_VERSION_JOIN(module,MAJOR) == major) && \
-   (DUNE_VERSION_JOIN(module,MINOR) == minor))
-
-#define DUNE_VERSION_EQUAL_REV(module,major,minor,revision) \
-  ( DUNE_VERSION_EQUAL(module,major,minor) && \
-    (DUNE_VERSION_JOIN(module,REVISION) == revision))
-
-#define DUNE_VERSION_NEWER(module,major,minor,revision) \
-  ((DUNE_VERSION_JOIN(module,MAJOR) > major) \
-   || ((DUNE_VERSION_JOIN(module,MAJOR) == major) && (DUNE_VERSION_JOIN(module,MINOR) >= minor)))
-
-#define DUNE_VERSION_NEWER_REV(module,major,minor,revision) \
-  ((DUNE_VERSION_JOIN(module,MAJOR) > major) \
-   || ((DUNE_VERSION_JOIN(module,MAJOR) == major) && (DUNE_VERSION_JOIN(module,MINOR) > minor)) \
-   || ((DUNE_VERSION_JOIN(module,MAJOR) == major) && (DUNE_VERSION_JOIN(module,MINOR) == minor) \
-       && (DUNE_VERSION_JOIN(module,REVISION) >= revision)))
-
-#define DUNE_VERSION_ID(major,minor,revision) \
-  ((unsigned int)((major << 24) + (minor << 16) + revision))
-
-#define DUNE_MODULE_VERSION_ID(module) \
-  DUNE_VERSION_ID( DUNE_VERSION_JOIN(module,MAJOR), DUNE_VERSION_JOIN(module,MINOR), DUNE_VERSION_JOIN(module,REVISION) )
-
-#endif
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index b3b240544..000000000
--- a/configure.ac
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /bin/bash
-# $Id$
-# Process this file with autoconf to produce a configure script.
-
-DUNE_AC_INIT # gets module version from dune.module file
-AM_INIT_AUTOMAKE
-AC_CONFIG_SRCDIR([common/stdstreams.cc])
-AM_CONFIG_HEADER([config.h])
-
-# create symlink dune -> $top_srcdir
-DUNE_SYMLINK
-# add configure flags needed to create log files for dune-autobuild
-DUNE_AUTOBUILD_FLAGS
-# check all dune dependecies and prerequisits
-DUNE_CHECK_ALL
-
-# preset variable to path such that #include <dune/...> works
-AC_SUBST([DUNE_COMMON_ROOT], '$(top_builddir)')
-AC_SUBST([AM_CPPFLAGS], '-I$(top_srcdir)')
-AC_SUBST([LOCAL_LIBS], '$(top_builddir)/common/libcommon.la')
-
-# write output
-AC_CONFIG_FILES([Makefile
-     lib/Makefile
-     bin/Makefile
-     common/Makefile
-     common/test/Makefile
-     common/exprtmpl/Makefile
-     doc/Makefile
-     doc/devel/Makefile
-     doc/layout/Makefile
-     doc/doxygen/Makefile
-     doc/doxygen/Doxyfile
-     doc/buildsystem/Makefile
-     m4/Makefile
-     am/Makefile
-     bin/check-log-store
-     dune-common.pc])
-AC_OUTPUT
-
-# make scripts executable
-chmod +x bin/check-log-store
-
-# print results
-DUNE_SUMMARY_ALL
diff --git a/doc/.gitignore b/doc/.gitignore
deleted file mode 100644
index 79aabd4e4..000000000
--- a/doc/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.deps
-Makefile
-Makefile.in
-semantic.cache
-*.html
\ No newline at end of file
diff --git a/doc/.wmlrc b/doc/.wmlrc
deleted file mode 100644
index c4873027d..000000000
--- a/doc/.wmlrc
+++ /dev/null
@@ -1,3 +0,0 @@
--DROOT~..
--I.
-
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index 868565806..000000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1,46 +0,0 @@
-# $Id$
-
-# also build these sub directories
-SUBDIRS = devel doxygen layout buildsystem
-
-# only build html pages, if documentation is enabled
-if BUILD_DOCS
-# only build html when wml is available
-if WML
- PAGES = view-concept.html installation-notes.html installation-notes-bluegenep.html
-endif
-endif
-
-# automatically create these web pages
-all: $(PAGES)
-
-# setting like in dune-web
-CURDIR=doc
-# position of the web base directory,
-# relative to $(CURDIR)
-BASEDIR=..
-EXTRAINSTALL=example.opts
-
-# install the html pages
-docdir=$(datadir)/doc/dune-common
-doc_DATA = $(PAGES) example.opts
-
-EXTRA_DIST = $(PAGES) example.opts
-
-if ! BUILD_DOCS
-# add tag to notify that dist has been build without documentation
-dist-hook:
-	echo "# No documentation included in distribution! " > $(distdir)/$(DOCUMENTATION_TAG_FILE)
-endif
-
-
-# include rules for wml -> html transformation
-include $(top_srcdir)/am/webstuff
-
-# remove html pages on ``make  clean''
-SVNCLEANFILES = $(PAGES)
-clean-local:
-	if test -e $(top_srcdir)/doc/doxygen/Doxydep; then rm -rf $(SVNCLEANFILES); fi
-
-# include further rules needed by Dune
-include $(top_srcdir)/am/global-rules
diff --git a/doc/buildsystem/.gitignore b/doc/buildsystem/.gitignore
deleted file mode 100644
index 1052752d9..000000000
--- a/doc/buildsystem/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.aux
-*.log
-*.dvi
-*.ps
-*.pdf
-*.toc
-*.out
-*.ind
-*.ilg
-*.backup
-Makefile.in
-Makefile
-auto
diff --git a/doc/buildsystem/Makefile.am b/doc/buildsystem/Makefile.am
deleted file mode 100644
index 6a11ee697..000000000
--- a/doc/buildsystem/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id: Makefile.am 4499 2006-04-13 14:56:35Z christi $
-
-if BUILD_DOCS
-  DOCS=buildsystem.pdf buildsystem.ps
-endif
-
-all: $(DOCS)
-
-# setting like in dune-web
-CURDIR=doc/buildsystem
-# position of the web base directory,
-# relative to $(CURDIR)
-BASEDIR=..
-EXTRAINSTALL = buildsystem.pdf
-
-EXTRA_DIST = $(DOCS)
-
-# install the html pages
-buildsystemdir=$(datadir)/doc/dune-common/buildsystem
-buildsystem_DATA = $(DOCS)
-
-# include rules for wml -> html transformation
-include $(top_srcdir)/am/webstuff
-
-include $(top_srcdir)/am/latex
-
-# remove html pages on ``make  clean''
-CLEANFILES = auto *.aux *.dvi *.log *.out *.toc
-
-# PDFs and PSs are only clean in svn version not in the tarballs
-SVNCLEANFILES = *.pdf *.ps
-clean-local:
-	if test -e $(top_srcdir)/$(CURDIR)/doxygen/Doxydep; then rm -rf $(SVNCLEANFILES) ; fi
-
-# include further rules needed by Dune
-include $(top_srcdir)/am/global-rules
diff --git a/doc/buildsystem/buildsystem.tex b/doc/buildsystem/buildsystem.tex
deleted file mode 100644
index 82fb65927..000000000
--- a/doc/buildsystem/buildsystem.tex
+++ /dev/null
@@ -1,1089 +0,0 @@
-\documentclass[11pt,a4paper,headinclude,footinclude,DIV16,normalheadings]{scrartcl}
-%\usepackage[today,nofancy]{svninfo}
-\usepackage[automark]{scrpage2}
-\usepackage[ansinew]{inputenc}
-%\usepackage{german}
-%\usepackage{bibgerm}
-\usepackage{amsmath}
-\usepackage{amsfonts}
-\usepackage{theorem}
-\usepackage{pst-all}
-\usepackage{color}
-\usepackage{listings}
-\lstset{language=bash, basicstyle=\normalfont\ttfamily\scriptsize,
-  keywordstyle=\color{black}\bfseries, tabsize=4,
-  stringstyle=\ttfamily, commentstyle=\it, extendedchars=true}
-\usepackage{hyperref}
-\usepackage{makeidx}
-\usepackage{xspace}
-
-\usepackage{graphicx}
-
-\newtheorem{lst}{Listing}
-\newtheorem{remark}{Remark}[section]
-
-\newcommand{\dune}{\texttt{DUNE}\xspace}
-\newcommand{\autoconf}{\texttt{autoconf}\xspace}
-\newcommand{\automake}{\texttt{automake}\xspace}
-\newcommand{\autogen}{\texttt{dune-autogen}\xspace}
-\newcommand{\libtool}{\texttt{libtool}\xspace}
-\newcommand{\configure}{\texttt{configure}\xspace}
-\newcommand{\configureac}{\texttt{configure.ac}\xspace}
-\newcommand{\makefile}{\texttt{Makefile}\xspace}
-\newcommand{\makefilein}{\texttt{Makefile.in}\xspace}
-\newcommand{\makefileam}{\texttt{Makefile.am}\xspace}
-\newcommand{\dunecommon}{\texttt{dune-common}\xspace}
-\newcommand{\duneistl}{\texttt{dune-istl}\xspace}
-\newcommand{\dunegrid}{\texttt{dune-grid}\xspace}
-\newcommand{\dunefem}{\texttt{dune-fem}\xspace}
-\newcommand{\dunedisc}{\texttt{dune-disc}\xspace}
-\newcommand{\dunegridhowto}{\texttt{dune-grid-howto}\xspace}
-\newcommand{\dunegriddevhowto}{\texttt{dune-grid-dev-howto}\xspace}
-\newcommand{\dunecontrol}{\texttt{dunecontrol}\xspace}
-\newcommand{\duneproject}{\texttt{duneproject}\xspace}
-\newcommand{\dunemodule}{\texttt{dune.module}\xspace}
-\newcommand{\make}{\texttt{make}\xspace}
-\newcommand{\topsrc}{\$(top\_srcdir)}
-
-\newcommand{\executable}[1]{{\em #1}\xspace}
-
-\pagestyle{scrheadings}
-
-\title{The DUNE Buildsystem HOWTO}
-
-\author{Christian Engwer$^\ast$ \and
-Felix Albrecht$^\dagger$}
-
-%\date{\svnToday}
-\date{March 1 2009}
-
-\publishers{%
-\vspace{10mm}
-{\normalsize $^\ast$Interdisziplin\"ares Zentrum f\"ur Wissenschaftliches Rechnen,
-Universit\"at Heidelberg,\\
-Im Neuenheimer Feld 368, D-69120 Heidelberg, Germany}\\
-%
-\bigskip
-{\normalsize $^\dagger$Institut f\"ur Numerische und Angewandte Mathematik,
-Westf\"alische Wilhelms-Universit\"at M\"unster,\\
-Einsteinstr. 62, D-48149 M\"unster, Germany}\\
-%
-\bigskip
-{\normalsize \texttt{\url{http://www.dune-project.org/}}}\\
-}
-
-\begin{document}
-
-\maketitle
-\tableofcontents
-\pagebreak
-
-\section{Getting started}\label{section::getting_started}
-
-\textbf{TODO: How do I build the grid howto?}
-
-\section{Creating your own \dune module}\label{section::creating_dune_module}
-
-This section tells you how to begin working with \dune without explaining any
-further details. For a closer look on \duneproject, see section
-\ref{section::creating_new_dune_project}.\\
-
-Once you have downloaded all the \dune modules you are interested in, you probably
-wonder ``How do I start working with \dune?'' It is quite easy.
-Let us assume you have a terminal open and are inside a directory containing
-some \dune modules. Let us say
- 
-\begin{lstlisting}[language=make]
-ls -l
-\end{lstlisting}
-produces something like:
-
-\begin{lstlisting}[language=make]
-dune-common/
-dune-grid/
-config.opts
-\end{lstlisting}
-
-There is no difference between a \dune module you have downloaded from
-the web and modules you created yourself.
-\dunecontrol takes care of configuring your project and creating the
-correct \texttt{Makefile}s (so you can easily link and use all the other \dune
-modules). It can be done by calling
- 
-\begin{lstlisting}[language=make]
-./dune-common/bin/duneproject
-\end{lstlisting}
-
-\emph{Note:} In case you are using the unstable version
-\dune you should be aware that the buildsystem may change,
-just like the source code. Therefore it might be that
-\texttt{duneproject} is not up to date with the latest changes. \\
-
-After calling \duneproject, you have to provide a name for your project
-(without whitespace), e.g., \texttt{dune-foo}. 
-The prefix \texttt{dune-} is considered good practice, but it is not
-mandatory.
-You are then asked to provide a
-list of all modules the new project should depend on (this will be
-something like \dunecommon \dunegrid, etc.). At last, you should provide
-the version of your project (e.g., \texttt{0.1}) and your email address.
-\duneproject now creates your new project which is a folder with the name of your project,
-containing some files needed in order to work with \dune.
-In our example,
- 
-\begin{lstlisting}[language=make]
-ls -l dune-foo/
-\end{lstlisting}
-should produce something like
-
-\begin{lstlisting}[language=make]
-configure.ac
-dune.module
-Makefile.am
-README
-src
- --> dune-foo.cc
-doc
-\end{lstlisting}
-
-You can now call \dunecontrol for your new project, as you would for any other \dune module. If you have a \texttt{config.opts}\xspace
-file configured to your needs (see e.g. the ``Installation Notes'' on
-\texttt{www.dune-project.org}), a simple call of
-
-\begin{lstlisting}[language=make]
-./dune-common/bin/dunecontrol --module=dune-foo --opts=config.opts all
-\end{lstlisting}
-should call \autogen, \configure and \make for your
-project and all modules your project depends on first.
-
-\begin{remark}
-Always call \dunecontrol from the directory containing \dunecommon.
-\end{remark}
-
-You can now  simply run
-
-\begin{lstlisting}[language=make]
-./dune-foo/src/dune-foo
-\end{lstlisting}
-which should produce something like
-
-\begin{lstlisting}[language=make]
-Hello World! This is dune-foo.
-This is a sequential program.
-\end{lstlisting}
-
-If you want your \dune module to be useable by other people your design should
-follow a certain structure. A good way to indicate that your module is set up
-like the other \dune modules is by naming it with the prefix
-\texttt{dune-}\xspace. 
-Since your module should be concerned with a certain topic, you should give it
-a meaningful name (e.g. \dunegrid is about grids). 
-You will also see that there are subfolders \texttt{doc/}\xspace,
-\texttt{foo/}\xspace and \texttt{src/}\xspace in \texttt{dune-foo/}\xspace.
-\texttt{foo/}\xspace will contain any headers that are of interest to other
-users (like the subfolder \texttt{common/}\xspace in
-\dunecommon, \texttt{grid/}\xspace in \dunegrid, etc.). Other users will have to
-include those files if they want to work with them. Let's say we already have some interface implementation
-in a file \texttt{bar.hh}\xspace. We put this one into the subfolder
-\texttt{foo/}\xspace.
-
-It is then convenient to collect whatever documentation exists about those
-header files in \texttt{doc/}\xspace and since there should
-at least exist some doxygen documentation there is  the
-subdirectory \texttt{doc/doxygen/}\xspace (see ``Coding Style'' in the
-setion ``Developing Dune'' on \texttt{www.dune-project.org} for details).
-Since we also need
-some other files for \texttt{doxygen}\xspace to work we copy the
-following files from \texttt{dune-grid/doc/doxygen/}\xspace to
-\texttt{dune-foo/doc/doxygen/}\xspace:
-
-\begin{lstlisting}[language=make]
-Doxydep
-doxy-footer.html
-doxy-header.wml
-dune-doxy.css
-mainpage
-modules
-\end{lstlisting}
-
-The \texttt{src/}\xspace subdirectory will contain the sources of your
-implementation (usually at least one \texttt{.cc}\xspace file with a
-\texttt{main} method).  But let's take a
-look at the structure of our project now.
-
-\begin{lstlisting}[language=make]
-dune-foo/
--> configure.ac
--> doc/
-   -> doxygen/
-      -> Doxydep
-      -> Doxyfile
-      -> doxy-footer.html
-      -> doxy-header.wml
-      -> dune-doxy.css
-      -> mainpage
-      -> Makefile.am
-      -> modules
-   -> Makefile.am
--> dune.module
--> foo/
-   -> bar.hh
--> Makefile.am
--> README
--> src/
-   -> dune_foo.cc
-\end{lstlisting}
-
-
-Now your module is nearly ready to being configured by \dunecontrol. Only the 
-\texttt{doxygen} part is missing (in fact, configuring it with the
-\texttt{--disable-documentation} flag would work from this point on).
-
-
-
-Now \dunecontrol is ready to take care of building the documentation. But since
-we copied some \texttt{doxygen} stuff from \dunegrid there are some
-\texttt{doxygen} files left we have to take care of. These are
-\texttt{Doxyfile}, \texttt{mainpage} and \texttt{modules}. You can edit the
-latter two as you like. They will form the main page and the module page of the
-\texttt{html} documentation of \texttt{doxygen}.\\
-We are basically left to change all occurrences of \texttt{grid} in the
-\texttt{Doxyfile} as well as some settings. If you open the file 
-\texttt{dune-foo/doc/doxygen/Doxyfile} the first thing you should see is a line
-like
-
-\begin{lstlisting}[language=make]
-PROJECT_NAME = dune-grid
-\end{lstlisting}
-which should obviously be changed into
-
-\begin{lstlisting}[language=make]
-PROJECT_NAME = dune-foo
-\end{lstlisting}
-to state the name of your module.
-
-The next thing we're interested in are the lines
-
-\begin{lstlisting}[language=make]
-INPUT = mainpage \
-        modules \
-        ../../grid/modules \
-        ../../grid
-\end{lstlisting}
-which should of course look like
-
-\begin{lstlisting}[language=make]
-INPUT = mainpage \
-        modules \
-        ../../foo
-\end{lstlisting}
-
-Then there are some settings of \dunegrid left which we probably don't want to
-have. So we just comment all the following lines by just adding a \texttt{\#}
-at the beginning of every line.
-
-\begin{lstlisting}[language=make]
-EXCLUDE = ../../grid/onedgrid \
-          ../../grid/uggrid \
-          ../../grid/test
-\end{lstlisting}
-
-\begin{lstlisting}[language=make]
-EXAMPLE_PATH = ../../grid/io/file/dgfparser/test 
-\end{lstlisting}
-
-\begin{lstlisting}[language=make]
-IMAGE_PATH = ../../grid/sgrid \
-             ../../grid/yaspgrid \
-             ../../grid/common \
-             ../../grid/io/file/dgfparser/test \
-             ../appl/refelements \
-             ../refinement
-\end{lstlisting}
-
-Now we are done editing files and ready to configure the module without the
-option\\ \texttt{--disable-documentation} (provided you have \texttt{doxygen} and
-the necessary tools installed on your system).\\
-After running
-
-\begin{lstlisting}[language=make]
-./dune-common/bin/dunecontrol --module=foo --opts=config.opts all
-\end{lstlisting}
-with a \texttt{config.opts} that enables documentation you should now find a
-\texttt{html} \texttt{doxygen} documentation in
-\texttt{dune-foo/doc/doxygen/html/index.html}.\\
-
-If you take a look at the \dune core modules you will find a symlink
-\begin{lstlisting}[language=make]
-dune -> .
-\end{lstlisting}
-in each main folder. Its purpose is to allow inclusion directives like
-\begin{lstlisting}[language=c++]
-#include<dune/foo/bar.hh>
-\end{lstlisting}
-
-
-\begin{remark}
- This mechanism is under discussion and may change in a future version of \dune.
-\end{remark}
-
-
-
-\section{The Structure of \dune}
-\dune consists of several independent modules:
-\begin{itemize}
-\item \dunecommon
-\item \dunegrid
-\item \duneistl
-\item \dunegridhowto
-\item \dunegriddevhowto
-\end{itemize}
-
-Single modules can depend on other modules and so the \dune modules
-form a dependency graph.  The build system has to track and resolve
-these inter-module dependencies.
-
-The build system is structured as follows:
-\begin{itemize}
-\item Each module is built using the GNU AutoTools.
-\item Each module has a set of modules it depends on, these modules
-  have to be built before building the module itself.
-\item Each module has a file \dunemodule which holds dependencies and
-  other information regarding the module.
-\item The modules can be built in the appropriate order using the
-  \dunecontrol script (shipped with \dunecommon)
-\end{itemize}
-
-The reasons to use the GNU AutoTools for \dune were the following
-\begin{itemize}
-\item We need platform independent build.
-\item Enabling or disabling of certain features depending on
-  features present on the system.
-\item Creations of libraries on all platforms.
-\item Easy creation of portable but flexible Makefiles.
-\end{itemize}
-
-The reasons to add the \dunecontrol script and the \dunemodule
-description files were
-\begin{itemize}
-\item One tool to setup all modules (the AutoTools can only work on one
-  module).
-\item Automatic dependency tracking.
-\item Automatic collection of command-line parameters (\configure needs
-  special command-line parameters for all modules it uses)
-\end{itemize}
-
-\section{Building Single Modules Using the GNU AutoTools}
-
-Software is generally developed to be used on multiple
-platforms. Since each of these platforms has different compilers,
-different header files, there is a need to write makefiles and build
-scripts that work on a variety of platforms. The Free
-Software Foundation (FSF), faced with this problem, devised a
-set of tools to generate makefiles and build scripts that work on a
-variety of platforms. These are the GNU AutoTools. 
-If you have downloaded and built any GNU
-software from source, you are familiar with the \configure script. The
-\configure script runs a series of tests to get information about
-your machine.
-
-The autotools simplify the generation of portable Makefiles and
-configure scripts.
-
-\minisec{autoconf}
-
-\autoconf is used to create the \configure script. \configure is
-created from \configureac, using a set of \texttt{m4} files.
-
-\begin{center}
-\psset{unit=0.5mm}
-\psset{linewidth=0.4pt}
-\begin{pspicture}(140,50)
-\put(-26,45){\parbox{40\unitlength}{\centering{}\configureac}}
-\put(116,45){\parbox{40\unitlength}{\centering{}\tt{}m4/*.m4}}
-\put(0,36)
-{
-  \psset{linewidth=1pt}
-  \psline[linearc=4]{c-}(-2,2)(-2,-2)(67.5,-2)(67.5,-6)
-  \psline[linearc=4]{c-}(137,2)(137,-2)(67.5,-2)(67.5,-6)
-  \psline{->}(67.5,-5.5)(67.5,-20)
-}
-\put(72,22){\textit{\autoconf}}
-\put(50,7){\parbox{40\unitlength}{\centering{}\configure}}
-\end{pspicture}
-\end{center}
-
-How to write a \configureac for \dune is described in Sec.\,\ref{configure.ac}.
-
-\minisec{automake}
-
-\automake is used to create the \makefilein files (needed for
-\configure) from \makefileam files, using a set of include files
-located in a directory called \texttt{am}. These include files provide
-additional features not provided by the standard \automake (see
-Sec.\,\ref{am_includes}). The \texttt{am} directory is in the \dunecommon
-module and each module intending to use one of these includes has to
-have a symlink \texttt{am} that points to \texttt{dune-common/am}.
-This link is usually created by \autogen (see Sec.\,\ref{autogen}).
-
-\begin{center}
-\psset{unit=0.5mm}
-\psset{linewidth=0.4pt}
-\begin{pspicture}(140,80)
-\put(-26,75){\parbox{40\unitlength}{\centering{}\makefileam}}
-\put(116,75){\parbox{40\unitlength}{\centering{}\tt{}am/*}}
-\put(0,66)
-{
-  \psset{linewidth=1pt}
-  \psline[linearc=4]{c-}(-2,2)(-2,-2)(67.5,-2)(67.5,-6)
-  \psline[linearc=4]{c-}(137,2)(137,-2)(67.5,-2)(67.5,-6)
-  \psline{->}(67.5,-5.5)(67.5,-20)
-}
-\put(72,52){\textit{\automake}}
-\put(50,37){\parbox{40\unitlength}{\centering{}\texttt{Makefile.in}}}
-\put(0,34)
-{
-  \psset{linewidth=1pt}
-  \psline[linestyle=dashed,dash=1.5pt 1.5pt]{->}(67.5,0)(67.5,-14.5)
-}
-\put(72,25){\textit{\configure}}
-\put(50,10){\parbox{40\unitlength}{\centering{}\texttt{Makefile}}}
-\end{pspicture}
-\end{center}
-
-Information on writing a \makefileam is described in \ref{makefile.am}
-
-\minisec{libtool}
-\libtool is a wrapper around the compiler and
-linker. It offers a generic interface for creating static and shared
-libraries, regardless of the platform it is running on.
-
-\libtool hides all the platform specific aspects of library creation
-and library usage. When linking a library or an executable you (or
-\automake) can call the compiler via \libtool. \libtool will then take
-care of
-\begin{itemize}
-\item platform specific command-line parameters for the linker,
-\item library dependencies.
-\end{itemize}
-
-\minisec{configure}
-\label{configure}
-\configure will run the set of tests specified in your \configureac.
-Using the results of these tests configure can check that all
-necessary features (libraries, programs, etc.) are present and can activate
-and deactivate certain features of the module depending on what is
-available on your system.
-
-For example \configure in \dunegrid will search for the ALUGrid
-library and  enable or disable \texttt{Dune::ALU3dGrid}.
-This is done by writing a preprocessor macro \verb!#define HAVE_ALUGRID!
-in the \texttt{config.h}
-header file. A header file can then use an \verb!#ifdef! statement to
-disable parts of the code that do not work without a certain
-feature. This can be used in the applications as well as in the headers
-of a \dune module.
-
-The \texttt{config.h} file is created by \configure from a
-\texttt{config.h.in} file, which is automatically created from the
-list of tests used in the \configureac.
-
-\subsection{Makefile.am}
-\label{makefile.am}
-
-\subsubsection{Overview}
-
-Let's start off with a simple program \executable{hello} built from
-\texttt{hello.c}. As \automake is designed to build and install a
-package it needs to know
-
-\begin{itemize}
-\item what programs it should build,
-\item where to put them when installing,
-\item which sources to use.
-\end{itemize}
-
-The core of a \makefileam thus looks like this:
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello
-hello_SOURCES = hello.c
-\end{lstlisting}
-
-This would build \executable{hello} but not install it when \texttt{make
-  install} is called. Using \verb!bin_PROGRAMS! instead of
-\verb!noinst_PROGRAMS! would install the \executable{hello}-binary into a
-\texttt{\textit{prefix}/bin} directory.
-
-Building more programs with several source files works like this
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello bye
-
-hello_SOURCES = common.c common.h hello.c
-bye_SOURCES = common.c common.h bye.c parser.y lexer.l
-\end{lstlisting}
-
-\automake has more integrated rules than the standard make, the example
-above would automatically use yacc/lex to create
-\texttt{parser.c/lexer.c} and build them into the {\em bye} binary.
-
-Make-Variables may be defined and used as usual:
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello bye
-
-COMMON = common.c common.h
-
-hello_SOURCES = $(COMMON) hello.c
-bye_SOURCES = $(COMMON) bye.c parser.y lexer.l
-\end{lstlisting}
-
-Even normal make-rules may be used in a \makefileam.
-
-\minisec{Using flags}
-
-Compiler/linker/preprocessor-flags can be set either globally:
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello bye
-
-AM_CPPFLAGS = -DDEBUG
-
-hello_SOURCES = hello.c
-bye_SOURCES = bye.c
-\end{lstlisting}
-
-or locally:
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello bye
-
-hello_SOURCES = hello.c
-hello_CPPFLAGS = -DHELLO
-
-bye_SOURCES = bye.c
-bye_CPPFLAGS = -DBYE
-\end{lstlisting}
-
-The local setting overrides the global one, thus
-
-\begin{lstlisting}[language=make]
-hello_CPPFLAGS = $(AM_CPPFLAGS) -Dmyflags
-\end{lstlisting}
-
-may be a good idea.
-
-It is even possible to compile the same sources with different flags:
-
-\begin{lstlisting}[language=make]
-noinst_PROGRAMS = hello bye
-
-hello_SOURCES = generic-greeting.c
-hello_CPPFLAGS = -DHELLO
-
-bye_SOURCES = generic-greeting.c
-bye_CPPFLAGS = -DBYE
-\end{lstlisting}
-
-Perhaps you're wondering why the above examples used
-\texttt{AM\_CPPFLAGS} instead of the normal \texttt{CPPFLAGS}? The
-reason for this is that the variables \texttt{CFLAGS},
-\texttt{CPPFLAGS}, \texttt{CXXFLAGS} etc. are considered {\em user
-  variables} which may be set on the commandline:
-
-\begin{lstlisting}[language=make]
-make CXXFLAGS="-O2000"
-\end{lstlisting}
-
-This would override any settings in Makefile.am which might be
-necessary to build. Thus, if the variables should be set even if the
-user wishes to modify the values, you should use the \texttt{AM\_*}
-version. 
-
-The real compile-command always uses both \texttt{AM\_\textit{VAR}} and
-\texttt{\textit{VAR}}. Options that
-autoconf finds are stored in the user variables (so that they may be
-overridden) 
-
-Commonly used variables are:
-\begin{itemize}
-\item \texttt{AM\_CPPFLAGS}: flags for the C-Preprocessor. This
-  includes preprocessor defines like \texttt{-DNDEBUG} and include
-  pathes like \texttt{-I/usr/local/package/include}
-\item \texttt{AM\_CFLAGS}, \texttt{AM\_CXXFLAGS}: flags for the
-  compiler (-g, -O, ...). One difference between these and the
-  \texttt{CPPFLAGS} is that the linker will get
-  \texttt{CFLAGS}/\texttt{CXXFLAGS} and \texttt{LDFLAGS} but not
-  \texttt{CPPFLAGS}
-\item \texttt{AM\_LDFLAGS} options for the linker
-\item \texttt{LDADD}: libraries to link to a binary
-\item \texttt{LIBADD}: libraries to add to a library
-\item \texttt{SOURCES}: list of source-files (may include headers as well)
-\end{itemize}
-
-\minisec{Conditional builds}
-
-Some parts of \dune only make sense if certain addon-packages were
-found. autoconf therefore defines {\em conditionals} which automake can
-use:
-
-\begin{lstlisting}[language=make]
-if OPENGL
-  PROGS = hello glhello
-else
-  PROGS = hello
-endif
-
-hello_SOURCES = hello.c
-
-glhello_SOURCES = glhello.c hello.c
-\end{lstlisting}
-
-This will only build the {\em glhello} program if OpenGL was found. An
-important feature of these conditionals is that they work with any
-make program, even those without a native {\em if} construct like GNU-make.
-
-\minisec{Default targets}
-
-An automake-generated Makefile does not only know the usual {\em all},
-{\em clean} and {\em install} targets but also
-\begin{itemize}
-\item {\bf tags} travel recursively through the directories and create
-  TAGS-files which can be used in many editors to quickly find where
-  symbols/functions are defined (use emacs-format)
-\item {\bf ctags} the same as "tags" but uses the vi-format for the tags-files
-\item {\bf dist} create a distribution tarball
-\item {\bf distcheck} create a tarball and do a test-build if it really works
-\end{itemize}
-
-\subsubsection{Building Documentation}
-\label{am_includes}
-
-If you want to build documentation you might need additional make
-rules. \dune offers a set of predefined rules to create certain kinds
-of documentation. Therefor you have to include the appropriate rules
-from the \texttt{am/} directory. These rules are stored in the
-\texttt{dune-common/am/} directory. If you want to use these any of
-these rules in your \dune module or application you will have to
-create a symbolic link to \texttt{dune-common/am/}. The creation of
-this link should be done by the \autogen script.
-
-\minisec{html pages}
-Webpages are created from wml sources, using the program \texttt{wml}
-(\texttt{\url{http://thewml.org/}}).\\
-\texttt{\$(top\_srcdir)/am/webstuff} contains the necessary rules.
-
-\hspace*{-2ex}\begin{minipage}{\textwidth}
-\begin{lst}[File Makefile.am] \mbox{}
-\lstinputlisting[language=make]{../Makefile.am}
-\end{lst}
-\end{minipage}
-
-\minisec{\LaTeX documents}
-In order to compile \LaTeX documents you can include
-\texttt{\$(top\_srcdir)/am/latex}. This way you get rules for creation
-of DVI files, PS files and PDF files.
-
-\minisec{SVG graphics}
-SVG graphics can be converted to png, in order to include them into
-the web page. This conversion can be done using inkscape
-(\texttt{\url{http://www.inkscape.org/}}).
-\texttt{\$(top\_srcdir)/am/inkscape.am} offers the necessary rules.
-
-
-\subsection{configure.ac}
-\label{configure.ac}
-
-\configureac  is a normal text file that contains several \autoconf
-macros. These macros are evaluated by the \texttt{m4} macro processor
-and transformed into a shell script.
-
-\begin{lst}[File dune-common/configure.ac] \mbox{}
-\lstinputlisting{../../configure.ac}
-\end{lst}
-
-We offer a set of macros that can be used in your \configureac:
-
-\begin{itemize}
-\item \texttt{DUNE\_CHECK\_ALL}
-  runs all checks usually needed by a {\em \dune module}.
-  It checks for all dependencies and suggestions and for their
-  prerequisites.
-  In order to make the dependencies known to \configure \autogen calls
-  \texttt{dunecontrol m4create} and write a file
-  \texttt{dependencies.m4}.
-\item \texttt{DUNE\_SYMLINK}
-  creates symlink \texttt{\$(top\_srcdir)/dune} $\rightarrow$
-  \texttt{\$(top\_srcdir)}. The programming guidelines (\ref{guidelines})
-  require that the include statements be like \texttt{\#include
-    <dune/...>}. If your module has a directory structure
-  \texttt{\topsrc/foo}, you will need such a link. However, you are
-  encouraged to store the files directly in a directory structure
-  \texttt{\topsrc/dune/foo} in order to avoid any inconvenience when
-  copying the files. This will also eliminate the necessity for
-  \texttt{DUNE\_SYMLINK}.
-\item \texttt{DUNE\_AUTOBUILD\_FLAGS}
-  adds configure flags needed to create log files for
-  \texttt{dune-autobuild}. If you want to add your module to the
-  \texttt{dune-autobuild} system, you have to call this macro.
-\item \texttt{DUNE\_SUMMARY\_ALL}
-  prints information on the results of all major checks run by
-  \texttt{DUNE\_CHECK\_ALL}.
-\end{itemize}
-
-\texttt{DUNE\_CHECK\_ALL} defines certain
-variables that can be used in the \configure script or in the
-\makefileam:
-
-\begin{itemize}
-\item \texttt{DUNE\textit{\,MODULE\,}\_CPPFLAGS}
-\item \texttt{DUNE\textit{\,MODULE\,}\_LDFLAGS}
-\item \texttt{DUNE\textit{\,MODULE\,}\_LIBS}
-\item \texttt{DUNE\textit{\,MODULE\,}ROOT}
-\end{itemize}
-
-The last step to a complete \configureac is that you tell \autoconf
-which files should be generated by \configure. Therefore you add an
-\texttt{AC\_CONFIG\_FILES([\textit{WhiteSpaceSeparatedListOfFiles}])}
-statement to your \configureac. The list of files should be the list
-of files that are to be generated, not the input---i.e. you would
-write
-\begin{lstlisting}[language=make]
-AC_CONFIG_FILES([Makefile doc/Makefile])
-\end{lstlisting}
-instead of
-\begin{lstlisting}[language=make]
-AC_CONFIG_FILES([Makefile.in doc/Makefile.in])
-\end{lstlisting}
-After you told \autoconf which files to create you have to actually
-trigger their creation with command \texttt{AC\_OUTPUT}.
-
-\subsection{Using configuration information provided by configure}
-
-The \lstinline!./configure! script in the module produces a file
-\lstinline!config.h!\ that contains information about the configuration
-parameters, for example which of the optional grid implementations is
-available and which dimension has been selected (if applicable). This
-information can then be used at compile-time to include header files
-or code that depend on optional packages.
-
-As an example, the macro \lstinline!HAVE_UG!\ can be used to compile
-UG-specific code as in
-\begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
-#if HAVE_UG
-#include"dune/grid/uggrid.hh"
-#endif
-\end{lstlisting}
-
-It is important that the file \lstinline!config.h! is the first
-include file in your application!
-
-
-
-
-\subsection{dune-autogen}
-\label{autogen}
-
-The \autogen script is used to bring the freshly checked out module
-into that state that you expect from a module received via the
-tarball. That means it runs all necessary steps so that you can call
-\configure to setup your module. In the case of \dune this means that
-\autogen runs
-\begin{itemize}
-\item \texttt{libtoolize} (prepare the module for \libtool)
-\item \texttt{dunecontrol m4create} (create an m4 file containing the
-  dependencies of this module)
-\item \texttt{aclocal} (collect all \autoconf macros needed for this module)
-\item \texttt{autoheader} (create the \texttt{config.h.in})
-\item \texttt{automake} (create the \makefilein)
-\item \texttt{autoconf} (create \configure)
-\end{itemize}
-
-If needed it will also create the symbolic link to the
-\texttt{dune-common/am/} directory (see \ref{am_includes}).
-
-\subsection{m4 files}
-\label{m4files}
-
-\texttt{m4} files contain macros which are then composed into
-\configure and are run during execution of \configure.
-
-\minisec{private m4 macros}
-
-You can add new tests to configure by providing additional macro files
-in the directory \texttt{module/m4/}.
-
-\minisec{dependencies.m4}
-
-\texttt{\topsrc/dependencies.m4} hold all information about the
-dependencies and suggestions of this module. It is an automatically
-generated file. It is generated by \texttt{dunecontrol m4create}.
-
-For each dependencies of your module \texttt{\emph{MODULE}\_CHECKS}
-and \texttt{\emph{MODULE}\_CHECK\_MODULE} is called. Last
-\texttt{\emph{MODULE}\_CHECKS} is called for your module, in order to
-check all prerequisites for your module.
-
-What you just read implies that you have to provide the two macros
-\texttt{\emph{MODULE}\_CHECKS} and
-\texttt{\emph{MODULE}\_CHECK\_MODULE} for your module. These should be
-written to a \texttt{m4/*.m4} file.
-
-Here follows an example for the module \texttt{dune-foo}:
-
-\begin{lstlisting}
-AC_DEFUN([DUNE_FOO_CHECKS])
-AC_DEFUN([DUNE_FOO_CHECK_MODULE],[
-  DUNE_CHECK_MODULES([dune-foo],        dnl module name
-                     [foo/foo.hh],      dnl header file
-                     [Dune::FooFnkt])   dnl symbol in libdunefoo
-])
-\end{lstlisting}
-
-The first one calls all checks required to make use of
-\texttt{dune-foo}. The dependency checks are not to be included, they
-are run automatically. The second macro tells how to check for your
-module. In case you are only writing an application and don't want to
-make this module available to other modules, you can just leave it
-empty. If you have to provide some way to find your module. The
-easiest is to use the \texttt{DUNE\_CHECK\_MODULES} macro, which is
-defined in \texttt{dune-common/m4/dune.m4}.
-
-\section{Building Sets of Modules Using \dunecontrol}
-\label{dunecontrol}
-\dunecontrol helps you building the different \dune modules in the
-appropriate order. Each module has a \dunemodule file which contains
-information on the module needed by \dunecontrol. 
-
-\dunecontrol searches for \dunemodule files recursively from where you
-are executing the program. For each \dune module found it will execute
-a \dunecontrol command. All commands offered by \dunecontrol have a
-default implementation. This default implementation can be overwritten
-and extended in the \dunemodule file.
-
-The commands you are interested in right now are
-\begin{itemize}
-\item \texttt{autogen} runs \autogen for each module. A list of
-  directories containing \dunemodule files and the parameters given on
-  the commandline are passed as parameters to \autogen.
-\item \texttt{configure} runs \configure for each
-  module. \texttt{--with-dune\textit{module}} parameters are created
-  for a set of known \dune modules.
-\item \texttt{make} runs \make for each module.
-\item \texttt{all} runs \autogen, \configure and \make for each module.
-\end{itemize}
-
-In order to build \dune the first time you will need the \texttt{all}
-command. In pseudo code \texttt{all} does the following:
-\begin{lstlisting}[language=Perl]
-foreach ($module in $Modules) {
-  foreach (command in {autogen,configure,make) {
-    run $command in $module
-  }
-}
-\end{lstlisting}
-
-This differs from calling
-\begin{lstlisting}
-dunecontrol autogen
-dunecontrol configure
-dunecontrol make
-\end{lstlisting}
-as it ensures that i.e. \dunecommon is fully built before \configure
-is executed in \dunegrid. Otherwise \configure in \dunegrid would
-complain that \texttt{libcommon.la} from \dunecommon is missing.
-
-Further more you can add parameters to the commands; these parameters
-get passed on to the program being executed. Assuming you want to call
-\texttt{make clean} in all \dune modules you can execute
-\begin{lstlisting}
-dunecontrol make clean
-\end{lstlisting}
-
-\minisec{opts files}
-You can also let \dunecontrol read the command parameters from a file.
-For each command you can specify parameters. The parameters are stored
-in a variable called \texttt{\textit{COMMAND}\,\_FLAGS} with
-\texttt{\textit{COMMAND}} written in capital letters.
-
-\begin{lst}[File example.opts] \mbox{}
-\lstinputlisting{../example.opts}
-\end{lst}
-
-When you specify an opts file and command line parameters
-\begin{lstlisting}
-dunecontrol --opts=some.opts configure --with-foo=bar
-\end{lstlisting}
-\dunecontrol will ignore the parameters specified in the opts file and
-you will get a warning.
-
-\minisec{environment variables}
-You can further control the behavior of \dunecontrol by certain
-environment variables.
-\begin{itemize}
-\item \texttt{DUNE\_CONTROL\_PATH} specifies the paths, where
-  \dunecontrol is searching for modules. All entries have to be colon
-  separated and should point to either a directory (which is search
-  recursively for \texttt{dune.module} files) or a directly
-  \texttt{dune.module} file.
-\item \texttt{DUNE\_OPTS\_FILE} specifies the opts file that should be
-  read by \dunecontrol. This variable will be overwritten by the
-  \texttt{--opts=} option.
-\item \texttt{MAKE} tells \dunecontrol which command to invoke for
-  'make'. This can be useful for example, if you want to use
-  \texttt{\textit{gmake}} as a make drop-in.
-\item \texttt{GREP} tells \dunecontrol which command to invoke for 'grep'.
-\end{itemize}
-
-\minisec{dune.module}
-
-The \dunemodule file is split into two parts. First we have the
-parameter section where you specify parameters describing the module.
-Then we have the command section where you can overload the default
-implementation of a command called via \dunecontrol.
-
-\begin{lst}[File dune.module] \mbox{}
-\begin{lstlisting}
-# parameters for dune control
-Module: dune_grid
-Depends: dune_common
-Suggests: UG Alberta Alu3d
-
-# overload the run_configure command
-run_configure () {
-  # lets extend the parameter list $CMD_FLAGS
-  if test "x$HAVE_UG" == "xyes"; then
-    CMD_FLAGS="$CMD_FLAGS \"--with-ug=$PATH_UG\""
-  fi
-  if test "x$HAVE_Alberta" == "xyes"; then
-    CMD_FLAGS="$CMD_FLAGS \"--with-alberta=$PATH_Alberta\""
-  fi  
-  if test "x$HAVE_Alu3d" == "xyes"; then
-    CMD_FLAGS="$CMD_FLAGS \"--with-alugrid=$PATH_Alu3d\""
-  fi
-  # call the default implementation
-  run_default_configure
-}
-\end{lstlisting}
-\end{lst}
-
-The parameter section will be parsed by \dunecontrol will effect
-i.e. the order in which the modules are built. The parameters and
-their values are separated by colon. Possible parameters are
-\begin{itemize}
-\item \texttt{Module} (\em required\em) is the name of the module. The
-  name is of the form \texttt{[a-zA-Z0-9\_]+}.
-\item \texttt{Depends} (\em required\em) takes a space separated list
-  of required modules. This module is not functional without these
-  other modules.
-\item \texttt{Suggests} (\em optional\em) takes a space separated list
-  of optional modules. This module is functional without these
-  other modules, but can offer further functionality if one or more of
-  the suggested modules are found.
-\end{itemize}
-
-The command section lets you overload the default implementation
-provided by \dunecontrol. For each command \dunecontrol call the
-function \texttt{run\_\textit{command}}. The parameters from the
-commandline or the opts file are store in the variable
-\texttt{\$CMD\_FLAGS}. If you just want to create additional parameters
-you can add these to \texttt{\$CMD\_FLAGS} and then call the default
-implementation of the command via
-\texttt{run\_default\_\textit{command}}.
-
-\section{Creating a new \dune project}\label{section::creating_new_dune_project}
-
-From a buildsystem point of view there is no difference between a \dune
-application and a \dune module.\\
-
-\dune modules are packages that offer a certain functionality that can
-be used by \dune applications. Therefore \dune modules offer libraries
-and/or header files. A \dune module needs to comply with certain rules
-(see \ref{guidelines}).
-
-Creating a new \dune project has been covered in detail in 
-\ref{section::creating_dune_module} using \texttt{duneproject} to take
-work off of the user. This is also the recommended way to start a new project. 
-If for whatever reasons you do not wish to use \duneproject here is 
-the bare minimum you have to provide in order to create a new project:
-\begin{itemize}
-\item a \dunemodule file\\
-  Usually you will only need to specify the parameters \texttt{Module}
-  and \texttt{Depends}.
-\item \emph{Note:} an \autogen script is \emph{not} needed any more!
-\item a basic m4 file\\
-  You need to provide two macros \texttt{\emph{MODULE}\_CHECKS}
-  and \texttt{\emph{MODULE}\_CHECK\_MODULE}.
-\item a \configureac file\\
-  Have look at the \configureac in \dunegrid for example. The most
-  important part is the call to \texttt{DUNE\_CHECK\_ALL} which
-  runs all checks needed for a \dune module, plus the checks for the
-  dependencies.
-\end{itemize}
-
-\section{Dune module guidelines}\label{section::dune_module_guidelines}
-\label{guidelines}
-
-A \dune module should comply with the following rules:
-\begin{itemize}
-\item Documentation is located under \texttt{doc/} and gets
-  web-installed under \texttt{BASEDIR/doc/}.
-\item \automake includes are located in \dunecommon. To use them, you
-  will have to make a symbolic link to \texttt{dune-common/am/} (see
-  \ref{am_includes}). The symlink creation should be handled by the
-  \autogen (see \ref{autogen}).
-\item The \texttt{am/} directory does not get included in the tarball.
-\item Header files that can be used by other \dune modules should be
-  accessible via \verb!#include <dune/foo/bar.hh>!. In order to work
-  with a freshly checkout version of your module you will usually need
-  to create a local symbolic link \texttt{dune ->
-    \textit{module-directory/}}. This link gets created by the
-  \texttt{DUNE\_SYMLINK} command in your \configureac. When running
-  \texttt{make install} all header files should be installed into
-  \texttt{\textit{prefix}/include/dune/}.
-\end{itemize}
-
-\section{Further documentation}
-
-\minisec{automake \& Makefile.am}
-\texttt{\url{http://www.gnu.org/software/automake/manual/}}\\
-The \automake manual describes in detail how to write and maintain a
-\makefileam and the usage of \automake.
-
-\minisec{autoconf \& configure.ac}
-\texttt{\url{http://www.gnu.org/software/autoconf/manual/}}\\
-The \autoconf manual covers the usage of \autoconf and how to write
-\configure.ac files (sometimes they are called \texttt{configure.in}).
-
-\minisec{Autoconf Macro Archive}
-\texttt{\url{http://autoconf-archive.cryp.to/}}\\
-The Autoconf Macro Archive provides macros that can be integrated in
-your \configureac in order to search for certain software. These
-macros are useful to many software writers using the autoconf tool, but too
-specific to be included into autoconf itself.
-
-\minisec{libtool}
-\texttt{\url{http://www.gnu.org/software/libtool/manual.html}}\\
-The \libtool manual offers further information on the usage of
-\libtool package and gives a good overview of the different
-problems/aspects of creating portable libraries.
-
-\minisec{autobook}
-\texttt{\url{http://sources.redhat.com/autobook/}}\\
-The autobook is a complete book describing the GNU toolchain
-(\autoconf, \automake and \libtool). It contains many recipes on how
-to use the autotools. The book is available as an online 
-version.
-
-\minisec{dune-project}
-\texttt{\url{http://www.dune-project.org/}}\\
-The official homepage of \dune.
-
-\end{document}
-
-%%% Local IspellDict: "american"
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: t
-%%% End: 
diff --git a/doc/devel/.gitignore b/doc/devel/.gitignore
deleted file mode 100644
index 4522b7f17..000000000
--- a/doc/devel/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-*.html
-semantic.cache
\ No newline at end of file
diff --git a/doc/devel/Makefile.am b/doc/devel/Makefile.am
deleted file mode 100644
index cfedabcfe..000000000
--- a/doc/devel/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-# $Id$
-
-if BUILD_DOCS
-# only build html when wml is available
-if WML
-PAGES = codingstyle.html portability.html \
-  tests.html features.html
-endif
-endif
-
-all: $(PAGES)
-
-# place in website
-BASEDIR=../..
-CURDIR=doc/devel
-
-# install the html pages
-develdir=$(datadir)/doc/dune-common/devel
-if BUILD_DOCS
-devel_DATA = $(PAGES)
-EXTRA_DIST= $(PAGES)
-endif
-
-include $(top_srcdir)/am/webstuff
-
-# remove html pages on ``make  clean'' if we are not a tarball
-SVNCLEANFILES = $(PAGES)
-clean-local:
-	if test -e $(top_srcdir)/doc/doxygen/Doxydep; then rm -rf $(SVNCLEANFILES); fi
-
-include $(top_srcdir)/am/global-rules
diff --git a/doc/devel/codingstyle.wml b/doc/devel/codingstyle.wml
deleted file mode 100644
index c7ffadc3b..000000000
--- a/doc/devel/codingstyle.wml
+++ /dev/null
@@ -1,88 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Coding Style"
-
-<h1>Coding Style</h1>
-
-<p>
-In order to keep the code maintainable we have decided upon a set
-of coding rules.  Some of them may seem like splitting hairs to you,
-but they do make it much easier for everybody to work on code that
-hasn't been written by oneself.</p>
-
-<p>
-So here they are...
-</p>
-
-    <ul>
-      <li> <b> Naming: </b>
-        <ul>
-          <li> <b>Variables:</b>
-            Names for variables should only consist of letters and digits.
-            The first letter should be a lower case one.  If your variable
-            names consists of several words, then the first letter of each
-            new word should be capital. As we decided on the only
-			exception are the <tt>begin</tt> and <tt>end</tt> methods.
-          </li>
-          <li> <b>Private Data Variables:</b>
-            Names of private data variables end with an underscore.
-          </li>
-          <li> <b> Typenames: </b>
-            For typenames, the same rules as for variables apply.  The only
-            difference is that the first letter should be a capital one.</li>
-          <li> <b> Macros: </b> 
-          The use of preprocessor macros is strongly discouraged.  If you
-          have to use them for whatever reason, please use capital letters
-          only.</li>
-          <li> <b> The Exlusive-Access Macro: </b> 
-            Every header file traditionally begins with the definition of
-            a preprocessor constant that is used to make sure that each
-            header file is only included once.  If your header file is
-            called 'myheaderfile.hh', this constant should be
-            DUNE_MYHEADERFILE_HH.</li>
-          <li> <b> Files: </b> 
-          Filenames should consist of lower case letters exclusively.
-          Header files get the suffix .hh, implementation files the suffix
-          .cc</li>
-        </ul>
-      </li>
-      <li> <b> Indentation: </b> </li>
-      <li> <b> Documentation: </b> <br>
-          Dune, as any software project of similar complexity, will stand and fall 
-          with the quality of its documentation.  Therefore it is of paramount
-          importance that you document well everything you do!  We use the
-          doxygen system to extract easily-readable documentation form the
-          source code.  Please use its syntax everywhere.  In particular,
-          please comment all
-          <ul>
-            <li> Method Parameters </li>
-            <li> Template Parameters </li> 
-            <li> Return Values </li>
-            <li> Exceptions thrown by a method </li>
-          </ul>
-          Since we all know that writing documentation is not well-liked and
-          is frequently defered to some vague 'next week', we herewith
-          proclaim the <b> Doc-Me Dogma </b>.  It goes like this:  Whatever
-          you do, and in whatever hurry you happen to be, please document
-          everything at least with a
-          /** \todo Please doc me! */.
-          That way at least the absence of documentation is documented,
-          and it is easier to get rid of it systematically.
-          <!-- The doc-me dogma, should details go to the .cc files? -->
-      </li>
-      <li> <b> Exceptions: </b> <br>
-          The use of exceptions for error handling is encouraged.  Until further
-          notice, all exceptions thrown are DuneEx.          
-      </li>
-      <li> <b> Output: </b> printf, streams, UserWriteF? </li>
-      <li> Should we allow 'for' and the command following it in the same line? </li>
-      <li> <b> Enum vs. static const: </b> <br>
-          The case is as of yet undecided... </li>
-      <li> <b> Debugging Code: </b> <br>
-          Global debugging code is switched off by setting the symbol NDEBUG.
-          In particular, all asserts are automatically removed.  Use those
-      asserts freely!
-      </li>
-      <!-- Enforcement -->
-</ul>
diff --git a/doc/devel/features.wml b/doc/devel/features.wml
deleted file mode 100644
index a07bf33f1..000000000
--- a/doc/devel/features.wml
+++ /dev/null
@@ -1,89 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Features"
-
-<h1>DUNE Features</h1>
-
-<p>
-The following list gives a short overview over the main features of DUNE
-and refers you to more detailed documentation.
-</p>
-
-    <ul>
-      <li> <b> Grid Implementation: </b>
-        <p>
-          So far six grid implementations are available through the DUNE grid interface.
-          Each is geared towards a different purpose.
-        </p>
-        <ul>
-          <li> <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1SGrid.html">SGrid:</a> 
-            A structured grid in n space dimensions
-          </li>
-          <li> <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1YaspGrid.html">YaspGrid:</a>
-            A structured parallel grid in n space dimensions
-          </li>
-          <li> <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1UGGrid.html">UGGrid:</a>
-            The grid manager of the UG toolbox
-          </li>
-          <li> <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1AlbertaGrid.html">AlbertaGrid:</a>
-            The grid manager of the Alberta toolbox
-          </li>
-          <li> <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1OneDGrid.html">OneDGrid:</a>
-            A sequential locally adaptive grid in one space dimension
-          </li>
-          <li> 
-            <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1ALUSimplexGrid.html">ALUSimplexGrid</a>,
-            <a href="$(ROOT)/doc/doxygen/dune-grid-html/classDune_1_1ALUCubeGrid.html">ALUCubeGrid</a>:
-            A hexahedral, tetrahedral, and triangular grid with nonconforming refinement 
-              including parallelization with dynamic load-balancing. </li>
-        </ul>
-      </li>
-    <br>
-    <li> <b> Linear Algebra </b>
-      <p>
-        DUNE contains ISTL (the Iterative Solver Template Library) for powerful
-        linear algebra.  The main features are:
-      <ul>
-        <li> Abstractions for block matrices 
-          (e.g. <a href="$(ROOT)/doc/doxygen/dune-istl-html/classDune_1_1BCRSMatrix.html">compressed row storage</a>
-          and <a href="$(ROOT)/doc/doxygen/dune-istl-html/classDune_1_1BDMatrix.html">block diagonal</a>)
-          and <a href="$(ROOT)/doc/doxygen/dune-istl-html/classDune_1_1BlockVector.html">block vectors</a> </li>
-        <li> Block structure arbitrarily nestable </li>
-        <li> High performance through generic programming </li>
-        <li> Expression templates for BLAS1 routines </li>
-        <li> Several standard solvers </li>
-      </ul>
-    </li>
-    <br>
-    <li> <b> Quadrature Formulas </b>
-      <ul>
-        <li> Quadrature rules for all common element types </li>
-        <li> Rules for hypercubes up to order 19, for simplices up to order 12 </li>
-        <li> Easy access </li>
-      </ul>
-    </li>
-    <br>
-    <li> <b> Shape Functions </b>
-      <ul>
-        <li> Lagrangrian shape functions of up to second order </li>
-        <li> Monomial shape functions of arbitrary order for Discontinous Galerkin methods </li>
-        <li> Orthonormal shape functions of up to eigth order </li>
-      </ul>
-    </li>
-    <br>
-    <li> <b> Input/Output </b>
-      <ul>
-        <li> Visualization using <a href="http://www.mathematik.uni-freiburg.de/IAM/Research/grape/GENERAL/">GRAPE</a> </li>
-        <li> Output in Data Explorer format </li>
-        <li> Reading and writing in the AmiraMesh format </li>
-        <li> Reading grid files in the grid independent Dune grid format
-             <a href="$(ROOT)/doc/doxygen/dune-grid-html/group__DuneGridFormatParser.html">DGF</a>
-        <li> Reading simplex grids through DGF  
-             constructed using the tools <a href="http://tetgen.berlios.de">Tetgen</a> and <a href="http://www.cs.cmu.edu/~quake/triangle.html">Triangle</a>
-        <li> Subsampling of high-order functions </li>
-        <li> Write grids and data in the format of the visualization toolkit (vtk) </li>
-      </ul>
-    </li>
-    <!-- Enforcement -->
-  </ul>
diff --git a/doc/devel/portability.wml b/doc/devel/portability.wml
deleted file mode 100644
index c592b193b..000000000
--- a/doc/devel/portability.wml
+++ /dev/null
@@ -1,93 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Using config.h helps writing portable code"
-
-<h1>Using config.h helps writing portable code</h1>
-
-<em>Just copied from a mail Thimo send to the dune list:</em>
-<pre>
-it seems that there is still a bit of confusion about DUNE_DEPRECATED:
-this define should be set in the applications config.h where the
-compiler features are known. Thus, a program on the application side
-should start with
-
-&#35;include "config.h"
-
-&#35;include &lt;dune/stuff/morestuff.hh&gt;
-
-so that workarounds for compiler bugs or other crazy tricks can work.
-
-We introduced DUNE_DEPRECATED so that the compiler can warn if
-functions are used which we decided to remove some meeting(s)
-ago. Otherwise those functions will be scattered thoughout the
-codebase for ages. Unfortunately, the deprecated-mechanism is a
-GNU-extension which is why we check for it.
-
-The DUNE_CHECK_ALL-test, which both duneapps and dune-tutorial use,
-includes this check. When icc is used DUNE_DEPRECATED will
-automatically be defined to nothing. If this does not work, please run
-"autogen.sh" again (this will fetch the newer tests from Dune) and
-check if config.h really doesn't mention DUNE_DEPRECATED. If so,
-please drop me a note.
-
-_Please_ don't fiddle with those automatic variables! This will break
-all the portability magic! As we experienced with Dune under Mac OS X
-there are a lot of subtle differences between Unices we have to take
-care of!
-</pre>
-
-<h1>Avoid _A and some other short variables</h1>
-<em>Just copied from a mail Christian send to the dune list:</em>
-<pre>
-We just realised, that on BSD systems _A is defined. This leads to lot
-of problems in our code as we use _A as a variable name. Then
-precosessor creates funny code like
-   const M&amp; 0x00001010;
-instead of
-   const M&amp; _A;
-
-The same problem implies for several _"one big charakter" names.
-
-So be warned :-)
-</pre>
-
-<h1>Portable Shell Programming</h1>
-<p>
-In the buildsystem quite some shell code is needed. The default
-shell <tt>/bin/sh</tt> is supposed to behave the same, no matter which
-machine you run your script on. Sadly there are some subtile, but
-still important, differences between the different 'bourne shell'
-implementations. Therefore it is important to know about possible caveats.
-</p>
-<ul>
-<li>
-<a href="http://www.linux.com/articles/34658">
-What to watch out for when writing portable shell scripts</a>
-(article in linux.com)
-</li>
-<li>
-<a href="http://code.dogmap.org/lintsh/">lintsh</a>: a collection of
-known incompatibilities between different <tt>sh</tt> versions.
-</li>
-<li>
-Autoconf Guide - chapter
-<a
-href="http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_node/autoconf_114.html">
-Portable Shell Programming</a>
-</li>
-</ul>
-
-<h1>Further information</h1>
-<ul>
-<li><a href="http://predef.sourceforge.net/">http://predef.sourceforge.net/</a> 
-"Pre-defined C/C++ Compiler Macros", tables of all known
-system-defines and compiler-defines. Also features links to other
-pages about portability</li>
-<li><a href="http://www.opengroup.org/onlinepubs/009695399/mindex.html">http://www.opengroup.org/onlinepubs/009695399/mindex.html</a>
-current "standard operating system interface and environment"
-including information about standard headers and functions</li>
-<li>The <a href="http://bhami.com/rosetta.html">Rosetta Stone for
-	  Unix</a> with an overview of the different systems</li>
-</li>
-</ul>
diff --git a/doc/devel/tests.wml b/doc/devel/tests.wml
deleted file mode 100644
index 8bca27b9f..000000000
--- a/doc/devel/tests.wml
+++ /dev/null
@@ -1,57 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Writing Tests"
-
-<h1>Writing Tests for Dune</h1>
-
-<p>
-Inspired by the principles of
-<a href="http://www.extremeprogramming.org/rules/testfirst.html">
-Extreme Programming</a> every developer is encouraged to write test
-cases whenever he encounters a bug, or even better write a test
-before adding new functionality to Dune</p>
-
-<h2>Integrating Tests into the build system</h2>
-
-<p>
-The automake build system offers an easy way to add tests. We decided
-to put all tests belonging to one module into a subdirectory
-<tt>test</tt> (i.e. all test for <tt>dune/common</tt> belong into
-<tt>dune/commom/test</tt>). In this directory one lists the tests
-in the Makefile.am. Automake offers two classes of tests, those
-that must run (<tt>TESTS</tt>) and does that must not run
-(<tt>XFAIL_TESTS</tt>):
-</p>
-<pre>
-...
-
-TESTS = mustrun
-XFAIL_TESTS = mustfail
-
-mustrun_SOURCES = mustrun.cc
-mustfail_SOURCES = mustfail.cc
-
-...
-</pre>
-
-<h2>Writing compile-time Tests</h2>
-
-<p>
-As described by Bjarne Stroustrup himself
-(<a href="http://www.research.att.com/~bs/bs_faq2.html#constraints">
-C++ Style and Technique FAQ</a>), there are ways to write compile time
-tests in C++ that ensure that a certain part of the code is compiled,
-but will never be executed. This kind of checks is heavily used in the
-tests of the grid interface in <tt>dune/grid/test/gridcheck.cc</tt>.
-</p>
-<p>
-Currently the build system does not support compile time test that must
-	  fail.
-</p>
-
-<h2>Writing Runtime Tests</h2>
-
-<p>
-We currently don't use a special test framework for runtime tests.
-</p>
diff --git a/doc/doxygen/.gitignore b/doc/doxygen/.gitignore
deleted file mode 100644
index bd885840e..000000000
--- a/doc/doxygen/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.deps
-Doxyfile
-doxy-header.html
-doxy-footer.html
-bestpractice.html
-doxygen-tag
-doxygen.log
-html
-html-dist
-latex
-Makefile
-Makefile.in
-semantic.cache
diff --git a/doc/doxygen/Doxyfile.in b/doc/doxygen/Doxyfile.in
deleted file mode 100644
index 683537c27..000000000
--- a/doc/doxygen/Doxyfile.in
+++ /dev/null
@@ -1,1239 +0,0 @@
-# Doxyfile 1.4.2
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = @DUNE_MOD_NAME@
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = @DUNE_MOD_VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = 
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-@DUNEWEB_TRUE@SHORT_NAMES            = NO
-@DUNEWEB_FALSE@SHORT_NAMES            = YES
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-# only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
-# include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = YES
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = YES
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = YES
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation.
-
-SHOW_DIRECTORIES       = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the progam writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = 
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = @srcdir@/mainpage \
-                         @srcdir@/modules \
-                         @top_srcdir@/common/modules \
-                         @top_srcdir@/common
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-
-FILE_PATTERNS          = *.hh \
-                         *.cc
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = @top_srcdir@/common/test
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories.
-
-EXCLUDE_PATTERNS       = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 3
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = 
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-####################################################################
-# Header Footer and Stylesheet in use is controled by the Makefile #
-#                                           (christi 16. Jan 2006) #
-####################################################################
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-@DUNEWEB_TRUE@HTML_HEADER            = doxy-header.html
-@DUNEWEB_FALSE@HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-@DUNEWEB_TRUE@HTML_FOOTER            = doxy-footer.html
-@DUNEWEB_FALSE@HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = 
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = 
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = 
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = 
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF     = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = DOXYGEN HAVE_MPI:=1 _DEBUG_ALLOCATOR_H:=1 DUNE_DEPRECATED:="/** \deprecated */"
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = NO
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = NO
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = NO
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = NO
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = NO
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that a graph may be further truncated if the graph's 
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
-# read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = NO
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = NO
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/doc/doxygen/Makefile.am b/doc/doxygen/Makefile.am
deleted file mode 100644
index 3a5164aa8..000000000
--- a/doc/doxygen/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id$
-
-# setting like in dune-web
-BASEDIR=../..
-CURDIR=doc/doxygen
-WHAT=
-
-if BUILD_DOCS
-if WML
-  WHAT = bestpractice.html
-endif
-endif
-
-doxygendir = $(datadir)/doc/dune-common/doxygen
-doxygen_DATA = $(WHAT)
-
-#we need this in the distribution
-EXTRA_DIST = $(WHAT) $(DOXYGENDISTFILES)
-
-all: $(WHAT) $(DOXYGENFILES)
-
-include $(top_srcdir)/am/doxygen
-include $(top_srcdir)/am/global-rules
-
-# file to clean only in svn and not in tarball tree
-SVNCLEANFILES = html $(WHAT) $(DOXYGENHEADER)
-
-clean-local:
-	if test "x$(VPATH)" != "x" && test ! -e $(srcdir)/doxygen-tag; then \
-	  if test -e $(top_srcdir)/doc/doxygen/Doxydep; then \
-	    rm -rf $(SVNCLEANFILES); \
-	  fi; \
-	fi
diff --git a/doc/doxygen/bestpractice.wml b/doc/doxygen/bestpractice.wml
deleted file mode 100644
index 3c69a4c4a..000000000
--- a/doc/doxygen/bestpractice.wml
+++ /dev/null
@@ -1,60 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Doxygen Best Practice"
-#use wml::std::grid
-#use wml::std::toc style=ol type=A111
-
-<h1* class="firstchild"> Doxygen Best Practice </h1*>
-
-<div class="toc">
-<div class="ignore_first_ol">
-<toc>
-</div>
-</div>
-
-<h2> usefull tips when documenting your code </h2>
-
-<h3>\copydoc &lt;link-object&gt;</h3>
-
-<p>
-<em>
-Use \copydoc in your derived class to reuse the documentation from the
-interface class.</em>
-</p>
-
-<p>
-Copies a documentation block from the object
-specified by &lt;link-object&gt; and pastes it at the location of the
-command. This command can be useful to avoid cases where a
-documentation block would otherwise have to be duplicated or it can be
-used to extend the documentation of an inherited member.
-</p>
-
-<p>
-The link object can point to a member (of a class, file or group), a
-class, a namespace, a group, a page, or a file (checked in that
-order). Note that if the object pointed to is a member (function,
-variable, typedef, etc), the compound (class, file, or group)
-containing it should also be documented for the copying to work.
-</p>
-
-<p>
-To copy the documentation for a member of a class for instance one can
-put the following in the documentation
-</p>
-
-<h3>Ordering Modules</h3>
-
-<p><em>Use the file <tt>doxygen/modules</tt> to change the ordering of modules
-on the modules page</em></p>
-
-<p>Doxygen sorts the modules in the order it finds their
-definition. This is influenced by the order doxygen reads the
-source files and by the include statements in these source files.</p>
-
-<p>The <tt>modules</tt> file is read right after the mainpage, before any
-source files are parsed. Entering a <tt>@defgroup</tt> statement makes
-this module known to doxygen so that all modules mentioned in the
-<tt>modules</tt> file are listed first and in the order they are
-defined there.</p>
\ No newline at end of file
diff --git a/doc/doxygen/mainpage b/doc/doxygen/mainpage
deleted file mode 100644
index 53e0bf0e8..000000000
--- a/doc/doxygen/mainpage
+++ /dev/null
@@ -1,17 +0,0 @@
-/** \mainpage dune-common Automatic Documentation
-
-\section intro Introduction
-
-Welcome to the %Dune documentation pages. This documentation has been
-generated using Doxygen, a free source code documentation system for
-documenting C/C++ code.
-
-\section mods Modules
-
-The best way to start is from the page \subpage modules which gives
-you access to the documentation by category.
-
-*/
-
-/** \page modules Modules
-*/
diff --git a/doc/doxygen/modules b/doc/doxygen/modules
deleted file mode 100644
index cf61aaabc..000000000
--- a/doc/doxygen/modules
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
-  @defgroup Common Common (foundation classes)
-*/
diff --git a/doc/example.opts b/doc/example.opts
deleted file mode 100644
index e1cf32731..000000000
--- a/doc/example.opts
+++ /dev/null
@@ -1,4 +0,0 @@
-# use these options for configure if no options a provided on the cmdline
-AUTOGEN_FLAGS="--ac=2.50 --am=-1.8"
-CONFIGURE_FLAGS="CXX=g++-3.4 --prefix='/tmp/Hu Hu'"
-MAKE_FLAGS=install
diff --git a/doc/installation-notes-bluegenep.wml b/doc/installation-notes-bluegenep.wml
deleted file mode 100644
index 5c89279eb..000000000
--- a/doc/installation-notes-bluegenep.wml
+++ /dev/null
@@ -1,67 +0,0 @@
-# -*- html -*-
-# $Id: installation-notes.wml 5391 2008-12-05 17:58:52Z christi $
-
-#use wml::layout::default title="DUNE - Installation Notes"
-
-<h1>Installation Notes for Blue Gene P</h1>
-
-<p>On IBM's Blue Gene System P the system and architecture
-  (like <a href="http://www.fz-juelich.de/jsc/jugene">Jugene in
-  J&uuml;lich</a> of the
-  front node (where one can login and compile stuff) and the compute
-  node (where the parallel problem will run) are different from each
-  other. Therefore one has to facilitate the auto-tool-chain's cross
-  compilation powers. This is a little bit tricky and it took me (Markus
-  Blatt) quite some time to compile DUNE in a way that it is reliably
-  working. Thanks to IBM's support I got it working now.
-</p>
-<p>In addition to the
-  normal <a href="installation-notes.html">Installation Notes</a> you
-  need the follwing special options to compile and link DUNE on Blue
-  Gene P.</p>
-<p>On the jugene all the tools needed for the cross compilation are
-  available in the directory
-  /bgsys/drivers/ppcfloor/gnu-linux/bin/. We therefore we need to add it
-  to our PATH:
-<pre>export PATH=/bgsys/drivers/ppcfloor/gnu-linux/bin/:$PATH</pre>.</p>
-<p>We need to tell condigure that we want to cross compile using the
-  <pre--host</pre> option. Furthermore we certainly want to enable the
-  parallel DUNE using the <pre>--enable-parallel</pre> option. As all
-  the tests take place on the front node we cannot start any parallel
-  program and therefore disable the tests with
-  the <pre>--disable-mpiruntest</pre option.</p>
-<p>Jugene uses static linkage by default. Unfortunately this seems not
-  to work out of the box with autotools-chain. If one tries to
-  configure and compile stuff with the default options libtool gets
-  messed up like this when linking to libdunecommon:
-  <pre>
-checking for dune-common installation or source tree...     found in /homeb/jicg42/jicg4201/DUNE/dune-common
-checking dune/common/stdstreams.hh usability... yes
-checking dune/common/stdstreams.hh presence... yes
-checking for dune/common/stdstreams.hh... yes
-checking for libdunecommon... no
-configure: WARNING: /homeb/jicg42/jicg4201/DUNE/dune-common does not seem to contain a valid dune-common (failed to link with libdunecommon.la)
-</pre>
-
-A closer look into config.log reveals the actual problem:
-<pre>
-configure:22583: ./libtool --tag=CXX --mode=link powerpc-bgp-linux-g++ -I/bgsys/local/libtiff/v3.8.2_gcc/include -I/bgsys/local/libjpeg/v6b_gcc/include -I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O0 -DNDEBUG -Wall  -L/bgsys/local/libtiff/v3.8.2_gcc/lib/ -L/bgsys/local/libjpeg/v6b_gcc/lib -o conftest -I/bgsys/local/libtiff/v3.8.2_gcc/include -I/bgsys/local/libjpeg/v6b_gcc/include -I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O0 -DNDEBUG -Wall  -I/homeb/jicg42/jicg4201/DUNE/dune-common  -L/bgsys/local/libtiff/v3.8.2_gcc/lib/ -L/bgsys/local/libjpeg/v6b_gcc/lib  -L/homeb/jicg42/jicg4201/DUNE/dune-common/lib conftest.cc  -ldunecommon >&5
-mkdir .libs
-powerpc-bgp-linux-g++ -I/bgsys/local/libtiff/v3.8.2_gcc/include -I/bgsys/local/libjpeg/v6b_gcc/include -I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O0 -DNDEBUG -Wall -o conftest -I/bgsys/local/libtiff/v3.8.2_gcc/include -I/bgsys/local/libjpeg/v6b_gcc/include -I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O0 -DNDEBUG -Wall -I/homeb/jicg42/jicg4201/DUNE/dune-common conftest.cc  -L/bgsys/local/libtiff/v3.8.2_gcc/lib/ -L/bgsys/local/libjpeg/v6b_gcc/lib -L/homeb/jicg42/jicg4201/DUNE/dune-common/lib /homeb/jicg42/jicg4201/DUNE/dune-common/lib/.libs/libdunecommon.a /bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/lib/libstdc++.so -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/toolchain/gnu/build-powerpc-bgp-linux/gcc-4.1.2-build/powerpc-bgp-linux/libstdc++-v3/src -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/toolchain/gnu/build-powerpc-bgp-linux/gcc-4.1.2-build/powerpc-bgp-linux/libstdc++-v3/src/.libs -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/toolchain/gnu/build-powerpc-bgp-linux/gcc-4.1.2-build/./gcc -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/bin -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/lib -L/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/lib/../powerpc-bgp-linux/lib -lc -lgcc_s -lm -Wl,--rpath -Wl,/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/lib -Wl,--rpath -Wl,/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/lib
-/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/lib/gcc/powerpc-bgp-linux/4.1.2/../../../../powerpc-bgp-linux/bin/ld: attempted static link of dynamic object `/bgsys/drivers/V1R3M0_460_2008-081112P/ppc/gnu-linux/powerpc-bgp-linux/lib/l
-ibstdc++.so'
-collect2: ld returned 1 exit status
-configure:22589: $? = 1
-</pre>
-</p>
-<p>To get rid of this one needs to force shared linkage within the
-  compiler flags using the <pre>-dynamic</pre> compiler option for the
-  Darwin linker
-</p>
-<p>To pass all these options to DUNE one can use the following options
-  file:
-<pre>
-CONFIGURE_FLAGS=&quot;--prefix=$HOME/dune_install --disable-documentation --disable-mpiruntest --enable-parallel --host=powerpc-bgp-linux  --without-x CXXFLAGS=\&quot;-I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O3 -dynamic -DNDEBUG -Wall\&quot; CFLAGS=\&quot;-I/bgsys/drivers/ppcfloor/arch/include/ -DNOOUTPUT -g -O3 -dynamic -DNDEBUG -Wall\&quot;\&quot;&quot;
-MAKE_FLAGS=&quot;all&quot;
-</pre>
-</p>
diff --git a/doc/installation-notes.wml b/doc/installation-notes.wml
deleted file mode 100644
index 437e8b8f1..000000000
--- a/doc/installation-notes.wml
+++ /dev/null
@@ -1,194 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Installation Notes"
-
-<h1>Installation Notes</h1>
-
-<h2>Dependencies</h2>
-
-<p>
-In order to build DUNE you need at least the following software:
-</p>
-<ul>
-<li>a standard compliant C++ compiler
-[tested are g++ (&gt;= 3.4.1) and icc (7.0, 8.0 and 9.0)]</li>
-<li>pkg-config</li>
-</ul>
-<p>
-The following software is recommend but optional:
-</p>
-<ul>
-<li>MPI (either OpenMPI, lam, or mpich suffice)</li>
-</ul>
-<p>
-When building the development version of DUNE you will also need
-</p>
-<ul>
-<li>automake (&gt;= 1.5)</li>
-<li>autoconf (&gt;= 2.50)</li>
-<li>libtool (!= 1.5.22 [OSX/fink])</li>
-</ul>
-<p>
-This will provide you with the core DUNE features.</p>
-<p>
-Some DUNE modules might support further software. Using this software
-is optional. The dune-grid module for example supports different
-external grid managers like Albert or UG; these have to be downloaded
-separately. For a list of supported contrib software packages and
-their installation see the notes on
-<a href="$(ROOT)/external_libraries/index.html">Installation External Libraries</a>.
-</p>
-
-<h2>Installing the core DUNE modules</h2>
-
-<p>
-Suppose you have downloaded all DUNE modules of interest to your
-computer and extracted then in one common directory. See the <a
-href="$(ROOT)/download.html">download</a> section
-for a list of available modules. 
-</p>
-<p>
-To compile the modules DUNE has to check several components of
-your system and whether prerequisites within the modules are met. For
-the ease of users we have designed a custom build system on top of the
-automake tools. Run
-</p>
-<pre>
-  ./dune-common/bin/dunecontrol all
-</pre>
-<p>
-to commence those tests and build all modules you have
-downloaded. Don't worry about messages telling you that libraries are
-missing: they are only needed for grid-self-checks we need for
-developing. 
-</p>
-<p>
-You can customize the build to your specific needs by using an options file
-(see below)
-</p>
-<pre>
-  ./dune-common/bin/dunecontrol --opts=/path_to/file.opts
-</pre>
-<p>
-If you did not tell dunecontrol to install with an options file you
-need to run
-</p>
-<pre>
-  ./dune-common/bin/dunecontrol make install
-</pre>
-<p>
-to install DUNE (you may need root-permissions for the install
-part depending on the prefix set)
-</p>
-<p>
-A more comprehensive introduction to the build system can be found in
-the <a href="buildsystem/buildsystem.pdf">Dune Build System Howto</a>.
-</p>
-
-<h3>Building a specific DUNE module (and its dependent modules)</h3>
-
-<p>You can instruct dunecontrol to build only a certain dune module,
-using the <kbd>--only=module_name&gt;</kbd> switch.
-Runnning dunecontrol script
-<p>
-<pre>
-./dune-common/bin/dunecontrol --module=&lt;module_name&gt; all
-</pre>
-</p>
-where &lt;module_name&gt; is the name of that particular module given in the
-dune.module file, will build only the module &lt;module_name&gt;.
-</p>
-
-<p>If you want to build a module and the modules it depends on, you
-must run:</p>
-<pre>
-./dune-common/bin/dunecontrol --module=module_name all
-</pre>
-<p> Read <a href="http://dune-project.org/dunemodule.html">Maintaining new Dune modules and applications</a> section for more details.
-</p>
-
-<h3>Passing options to the build process</h3>
-
-<p>
-Using the dunecontrol script the following atomic commands can be
-executed:
-</p>
-<ul>
-<li>
-autogen (runs autogen in each module, only needed when downloaded
-via svn)
-</li>
-<li>
-configure (runs the configure tests for each module
-</li>
-<li>
-exec (executes a command in each module directory)
-</li>
-<li>
-make (runs make for each module)
-</li>
-<li>
-update (updates the svn version)
-</li>
-</ul>
-<p>
-The composite command all simply runs autogen, configure and make for
-each module.
-</p>
-<p>
-As it is often not convenient (and for the target all impossible) to
-specify the options for each command as parameters after the call, one
-can pass the options via file specified by the <kbd>--opts=&lt;file&gt;</kbd>
-option. For each atomic command one specify the options via a ine
-</p>
-<pre>
-&lt;COMMAND_UPPERCASE&gt;_FLAGS=&lt;flags&gt; # e.g.: MAKE_FLAGS=install
-</pre>
-<p>
-The available options for make and svn are the natural ones. The
-configure commands available can be found by issuing
-</p>
-<pre>
-dunecontrol --only=dune-common configure --help
-</pre>
-<p>
-and for autogen by
-</p>
-<pre>
-dunecontrol --only=dune-common autogen --help
-</pre>
-<p>
-(In the svn version this has to be calles after running autogen.)
-</p>
-<p>
-An example of an options file is 
-</p>
-<pre>
-  \# use a special compiler (g++ version 3.4) and install to a custom
-  \# directory, default is /usr/local/bin
-  CONFIGURE_FLAGS="CXX=g++-3.4 --prefix='/tmp/HuHu'"
-  \# Set the default target of make to install. Now the call above will
-  \# not just build the DUNE modules but also install it
-  MAKE_FLAGS=install
-  \# The default versions of automake and autogen are not sufficient
-  \# therefore we need to specify what versions to use
-  AUTOGEN_FLAGS="--ac=2.59 --am=1.9"
-</pre>
-
-<p>On some platforms special care might have to be taken to make
-  things comile, e.g. this is the cause for IBM's Blue Gene System
-  P. If you want to run DUNE there please read the <a href="installation-notes-bluegenep.html">instructions</a> of
-  Markus and save yourself a lot of time.
-<h2>Creating your own DUNE project module</h2>
-<p>
-You can create your own dune project module by using the duneproject script available in dune-common/bin directory.
-Running the script will create a directory with supporting files
-(configure.ac, Makefile.am etc.) and a sample .cc file.
-After creating the module you can build this as explained above under "Building a specific DUNE module".
-</p>
-<p>The <a
-href="http://dune-project.org/doc/buildsystem/buildsystem.pdf">DUNE
-Build System Howto</a> will also give you an excellent introduction to
-the build system and how to create new modules/projects your own.
-</p>
diff --git a/doc/layout/.gitignore b/doc/layout/.gitignore
deleted file mode 100644
index 55880268f..000000000
--- a/doc/layout/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile
-Makefile.in
-semantic.cache
\ No newline at end of file
diff --git a/doc/layout/Makefile.am b/doc/layout/Makefile.am
deleted file mode 100644
index 544db6654..000000000
--- a/doc/layout/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-# $Id$
-
-EXTRA_DIST = default.wml
-
-# nothing to install
-web-install:
-
-include $(top_srcdir)/am/global-rules
diff --git a/doc/layout/default.wml b/doc/layout/default.wml
deleted file mode 100644
index fc2f2d9ff..000000000
--- a/doc/layout/default.wml
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- html -*-
-# $Id$
-
-# simple page layout, can be replaced by full version for the
-# dune-website
-
-#use wml::std::tags
-
-
-## Page layout
-
-#use wml::layout::header
-#use wml::layout::navigation
-
-<body>
-  <dump BASIC_BODY>
-</body>
-
-## catch any content after this:
-
-{#BASIC_BODY#:
diff --git a/doc/layout/header.wml b/doc/layout/header.wml
deleted file mode 100644
index eca1e08e8..000000000
--- a/doc/layout/header.wml
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- html -*-
-# $Id$
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\
-  "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-
-<head>
-<title>$(title:-Untitled)</title>
-{#STYLESHEETS#}
-</head>
diff --git a/doc/layout/navigation.wml b/doc/layout/navigation.wml
deleted file mode 100644
index e69de29bb..000000000
diff --git a/doc/view-concept.wml b/doc/view-concept.wml
deleted file mode 100644
index 8475b4539..000000000
--- a/doc/view-concept.wml
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- html -*-
-# $Id$
-
-#use wml::layout::default title="DUNE - Documentation - View Concept"
-
-<h1>The View Concept</h1>
-
-<p>Dune is designed to create a common efficient interface for a
-multitude of different grid packages. There are large differences in
-how the geometrical and topological information in a grid is created
-and stored. Common designs are:
-</p>
-
-<ul>
-<li>the elements are created and stored in dynamic memory. Pointers
-are used to represent elements (e.g. UG)</li>
-<li>only a macro-grid is stored like above, elements on refined levels are
-created when needed and destroyed as soon as possible (e.g. Alberta)</li>
-<li>all elements are created on-the-fly (e.g. SGrid)</li>
-</ul>
-
-<p>
-Depending on the problem each of those designs may perform better or
-worse than the others. Note that a persistent element structure does
-not generally exist so that references pose a problem.
-</p>
-
-<p>
-The major idea in the Dune grid-interface is that access to the grid
-components (entities) is only possible via a <em>view</em>, i.e. the
-grid returns a datastructure which provides read-only information. To
-speed up execution even this information is (if possible) only
-generated on access. Ideally, the constructor of such a view is as
-lightweight as possible.
-</p>
-
-<h2>Entity</h2>
-
-<p> The <tt>Entity</tt> is the datastructure a grid implementation
-offers to grant a view on it's internal structures. It creates
-additional e.g. geometrical information upon access and may therefore
-be rather heavyweight in memory consumption. To avoid consistency
-problems and possibly expensive memory operations an <tt>Entity</tt>
-cannot be copied. The <tt>Entity</tt> datastructure does only exist
-inside a grid, access is possible either via a reference or an
-<tt>EntityPointer</tt>. As mentioned above the Entity is not
-necessarily persistent, therefore references to Entities cannot be
-copied either.</p>
-
-<p>
-Usually the entities are accessed via iterators offered by the grid.
-</p>
-
-
-<h2>EntityPointer</h2>
-
-<p> An <tt>EntityPointer</tt> is a persistent data structure
-representing the identity on an Entity and can thus be used to be
-stored in lists, copied and compared. The grid implementation stores
-the minimal information in an <tt>EntityPointer</tt> needed to access
-or generate an <tt>Entity</tt> in constant time. Thus, it is assumed
-to be small in memory. Note though that this is only true as long as
-dereferenciation is not used.</p>
-
-
-<h2>Iterators</h2>
-
-<p>The grid iterators (<tt>LevelIterator</tt>, <tt>LeafIterator</tt>,
-<tt>HierarchicIterator</tt>) can be used to traverse a grid and gain a
-view on all entities. They also represent the identity of the current
-entity and are therefore subclassed from <tt>EntityPointer</tt>.</p>
-
-<p>You may notice that the <tt>IntersectionIterator</tt> is a special
-case: the intersections it traverses are indeed between two
-entities. Both can be accessed via the <tt>inside</tt> and
-<tt>outside</tt> methods which return an <tt>EntityPointer</tt>.
-</p>
-
diff --git a/dune-common.pc.in b/dune-common.pc.in
deleted file mode 100644
index 596536423..000000000
--- a/dune-common.pc.in
+++ /dev/null
@@ -1,15 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-CXX=@CXX@
-CC=@CC@
-DEPENDENCIES=@REQUIRES@
-
-Name: @PACKAGE_NAME@
-Version: @VERSION@
-Description: Dune (Distributed and Unified Numerics Environment) common module
-URL: http://dune-project.org/
-Requires: ${DEPENDENCIES}
-Libs: -L${libdir} -ldunecommon
-Cflags: -I${includedir}
diff --git a/dune.module b/dune.module
deleted file mode 100644
index f8d364fb1..000000000
--- a/dune.module
+++ /dev/null
@@ -1,3 +0,0 @@
-Module: dune-common
-Version: 1.3svn
-Maintainer: dune@dune-project.org
diff --git a/lib/.gitignore b/lib/.gitignore
deleted file mode 100644
index cd54497c8..000000000
--- a/lib/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.libs
-Makefile.in
-Makefile
-libdunecommon.la
diff --git a/lib/Makefile.am b/lib/Makefile.am
deleted file mode 100644
index cf1d73b6f..000000000
--- a/lib/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-# $Id: $
-
-#the dune-common library
-lib_LTLIBRARIES = libdunecommon.la
-
-# this is just a renaming of libcommon to prevent name clashes
-libdunecommon_la_SOURCES =
-libdunecommon_la_LIBADD = ../common/libcommon.la
-
-include $(top_srcdir)/am/global-rules
diff --git a/m4/.gitignore b/m4/.gitignore
deleted file mode 100644
index 55880268f..000000000
--- a/m4/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile
-Makefile.in
-semantic.cache
\ No newline at end of file
diff --git a/m4/Makefile.am b/m4/Makefile.am
deleted file mode 100644
index 9d7858e03..000000000
--- a/m4/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-# $Id$
-
-ALLM4S = acx_blas.m4 acx_lapack.m4 acx_mpi.m4 acx_pthread.m4 \
-         ax_check_gl.m4 ax_lang_compiler_ms.m4 dune_all.m4 \
-         dune_autobuild.m4 dune_common.m4 dune_compiler.m4 dune_deprecated.m4 \
-         dune_docu.m4 dune_exprtmpl.m4  dune_griddim.m4 dune_linkcxx.m4 \
-	 dune.m4 \
-         dune_mpi.m4 dune_streams.m4 \
-         f5.m4 fortran_overwrite.m4 grape.m4 hdf5.m4 \
-         immdx_lib_metis.m4 inkscape.m4 mpi-config.m4 opengl.m4 \
-         pardiso.m4 parmetis.m4 static_assert.m4 superlu-dist.m4 \
-	 superlu.m4 xdr.m4
-
-aclocaldir = $(datadir)/aclocal
-aclocal_DATA = $(ALLM4S)
-
-EXTRA_DIST = $(ALLM4S)
-
-include $(top_srcdir)/am/global-rules
diff --git a/m4/TODO b/m4/TODO
deleted file mode 100644
index 30370d157..000000000
--- a/m4/TODO
+++ /dev/null
@@ -1,7 +0,0 @@
-- how to check for -lXext in Grape-test?
-
-- provide a wrapper for ACX_MPI called DUNE_PATH_MPI (should also fix
-  the aclocal-1.4-problem)
-
-- do we perhaps need -ldl for Grape? libltdl instead? What about -Wl,-rpath?
-
diff --git a/m4/acx_blas.m4 b/m4/acx_blas.m4
deleted file mode 100644
index bb1c534d1..000000000
--- a/m4/acx_blas.m4
+++ /dev/null
@@ -1,153 +0,0 @@
-dnl @synopsis ACX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl This macro looks for a library that implements the BLAS
-dnl linear-algebra interface (see http://www.netlib.org/blas/). On
-dnl success, it sets the BLAS_LIBS output variable to hold the
-dnl requisite library linkages.
-dnl
-dnl To link with BLAS, you should link with:
-dnl
-dnl 	$BLAS_LIBS $LIBS $FLIBS
-dnl
-dnl in that order. FLIBS is the output variable of the
-dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS), and
-dnl is sometimes necessary in order to link with F77 libraries. Users
-dnl will also need to use AC_F77_DUMMY_MAIN (see the autoconf manual),
-dnl for the same reason.
-dnl
-dnl Many libraries are searched for, from ATLAS to CXML to ESSL. The
-dnl user may also use --with-blas=<lib> in order to use some specific
-dnl BLAS library <lib>. In order to link successfully, however, be
-dnl aware that you will probably need to use the same Fortran compiler
-dnl (which can be set via the F77 env. var.) as was used to compile the
-dnl BLAS library.
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a BLAS
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_BLAS.
-dnl
-dnl This macro requires autoconf 2.50 or later.
-dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2001-12-13
-dnl @license GPLWithACException
-
-AC_DEFUN([ACX_BLAS], [
-AC_PREREQ(2.50)
-AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
-acx_blas_ok=no
-
-AC_ARG_WITH(blas,
-	[AC_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])
-case $with_blas in
-	yes | "") ;;
-	no) acx_blas_ok=disable ;;
-	-* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;;
-	*) BLAS_LIBS="-l$with_blas" ;;
-esac
-
-# Get fortran linker names of BLAS functions to check for.
-AC_F77_FUNC(sgemm)
-AC_F77_FUNC(dgemm)
-
-acx_blas_save_LIBS="$LIBS"
-LIBS="$LIBS $FLIBS"
-
-# First, check BLAS_LIBS environment variable
-if test $acx_blas_ok = no; then
-if test "x$BLAS_LIBS" != x; then
-	save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
-	AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
-	AC_TRY_LINK_FUNC($sgemm, [acx_blas_ok=yes], [BLAS_LIBS=""])
-	AC_MSG_RESULT($acx_blas_ok)
-	LIBS="$save_LIBS"
-fi
-fi
-
-# BLAS linked to by default?  (happens on some supercomputers)
-if test $acx_blas_ok = no; then
-	save_LIBS="$LIBS"; LIBS="$LIBS"
-	AC_CHECK_FUNC($sgemm, [acx_blas_ok=yes])
-	LIBS="$save_LIBS"
-fi
-
-# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(atlas, ATL_xerbla,
-		[AC_CHECK_LIB(f77blas, $sgemm,
-		[AC_CHECK_LIB(cblas, cblas_dgemm,
-			[acx_blas_ok=yes
-			 BLAS_LIBS="-lcblas -lf77blas -latlas"],
-			[], [-lf77blas -latlas])],
-			[], [-latlas])])
-fi
-
-# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(blas, $sgemm,
-		[AC_CHECK_LIB(dgemm, $dgemm,
-		[AC_CHECK_LIB(sgemm, $sgemm,
-			[acx_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
-			[], [-lblas])],
-			[], [-lblas])])
-fi
-
-# BLAS in Alpha CXML library?
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(cxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-lcxml"])
-fi
-
-# BLAS in Alpha DXML library? (now called CXML, see above)
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(dxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-ldxml"])
-fi
-
-# BLAS in Sun Performance library?
-if test $acx_blas_ok = no; then
-	if test "x$GCC" != xyes; then # only works with Sun CC
-		AC_CHECK_LIB(sunmath, acosp,
-			[AC_CHECK_LIB(sunperf, $sgemm,
-        			[BLAS_LIBS="-xlic_lib=sunperf -lsunmath"
-                                 acx_blas_ok=yes],[],[-lsunmath])])
-	fi
-fi
-
-# BLAS in SCSL library?  (SGI/Cray Scientific Library)
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(scs, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lscs"])
-fi
-
-# BLAS in SGIMATH library?
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(complib.sgimath, $sgemm,
-		     [acx_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"])
-fi
-
-# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(blas, $sgemm,
-		[AC_CHECK_LIB(essl, $sgemm,
-			[acx_blas_ok=yes; BLAS_LIBS="-lessl -lblas"],
-			[], [-lblas $FLIBS])])
-fi
-
-# Generic BLAS library?
-if test $acx_blas_ok = no; then
-	AC_CHECK_LIB(blas, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lblas"])
-fi
-
-AC_SUBST(BLAS_LIBS)
-
-LIBS="$acx_blas_save_LIBS"
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_blas_ok" = xyes; then
-        ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])
-        :
-else
-        acx_blas_ok=no
-        $2
-fi
-])dnl ACX_BLAS
diff --git a/m4/acx_lapack.m4 b/m4/acx_lapack.m4
deleted file mode 100644
index 41041f8f5..000000000
--- a/m4/acx_lapack.m4
+++ /dev/null
@@ -1,95 +0,0 @@
-dnl @synopsis ACX_LAPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl This macro looks for a library that implements the LAPACK
-dnl linear-algebra interface (see http://www.netlib.org/lapack/). On
-dnl success, it sets the LAPACK_LIBS output variable to hold the
-dnl requisite library linkages.
-dnl
-dnl To link with LAPACK, you should link with:
-dnl
-dnl     $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
-dnl
-dnl in that order. BLAS_LIBS is the output variable of the ACX_BLAS
-dnl macro, called automatically. FLIBS is the output variable of the
-dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS), and
-dnl is sometimes necessary in order to link with F77 libraries. Users
-dnl will also need to use AC_F77_DUMMY_MAIN (see the autoconf manual),
-dnl for the same reason.
-dnl
-dnl The user may also use --with-lapack=<lib> in order to use some
-dnl specific LAPACK library <lib>. In order to link successfully,
-dnl however, be aware that you will probably need to use the same
-dnl Fortran compiler (which can be set via the F77 env. var.) as was
-dnl used to compile the LAPACK and BLAS libraries.
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a LAPACK
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_LAPACK.
-dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2002-03-12
-dnl @license GPLWithACException
-
-AC_DEFUN([ACX_LAPACK], [
-AC_REQUIRE([ACX_BLAS])
-acx_lapack_ok=no
-
-AC_ARG_WITH(lapack,
-        [AC_HELP_STRING([--with-lapack=<lib>], [use LAPACK library <lib>])])
-case $with_lapack in
-        yes | "") ;;
-        no) acx_lapack_ok=disable ;;
-        -* | */* | *.a | *.so | *.so.* | *.o) LAPACK_LIBS="$with_lapack" ;;
-        *) LAPACK_LIBS="-l$with_lapack" ;;
-esac
-
-# Get fortran linker name of LAPACK function to check for.
-AC_F77_FUNC(cheev)
-
-# We cannot use LAPACK if BLAS is not found
-if test "x$acx_blas_ok" != xyes; then
-        acx_lapack_ok=noblas
-fi
-
-# First, check LAPACK_LIBS environment variable
-if test "x$LAPACK_LIBS" != x; then
-        save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
-        AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
-        AC_TRY_LINK_FUNC($cheev, [acx_lapack_ok=yes], [LAPACK_LIBS=""])
-        AC_MSG_RESULT($acx_lapack_ok)
-        LIBS="$save_LIBS"
-        if test acx_lapack_ok = no; then
-                LAPACK_LIBS=""
-        fi
-fi
-
-# LAPACK linked to by default?  (is sometimes included in BLAS lib)
-if test $acx_lapack_ok = no; then
-        save_LIBS="$LIBS"; LIBS="$LIBS $BLAS_LIBS $FLIBS"
-        AC_CHECK_FUNC($cheev, [acx_lapack_ok=yes])
-        LIBS="$save_LIBS"
-fi
-
-# Generic LAPACK library?
-for lapack in lapack lapack_rs6k; do
-        if test $acx_lapack_ok = no; then
-                save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
-                AC_CHECK_LIB($lapack, $cheev,
-                    [acx_lapack_ok=yes; LAPACK_LIBS="-l$lapack"], [], [$FLIBS])
-                LIBS="$save_LIBS"
-        fi
-done
-
-AC_SUBST(LAPACK_LIBS)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_lapack_ok" = xyes; then
-        ifelse([$1],,AC_DEFINE(HAVE_LAPACK,1,[Define if you have LAPACK library.]),[$1])
-        :
-else
-        acx_lapack_ok=no
-        $2
-fi
-])dnl ACX_LAPACK
diff --git a/m4/acx_mpi.m4 b/m4/acx_mpi.m4
deleted file mode 100644
index 5b36119f2..000000000
--- a/m4/acx_mpi.m4
+++ /dev/null
@@ -1,108 +0,0 @@
-dnl @synopsis ACX_MPI([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl This macro tries to find out how to compile programs that use MPI
-dnl (Message Passing Interface), a standard API for parallel process
-dnl communication (see http://www-unix.mcs.anl.gov/mpi/)
-dnl
-dnl On success, it sets the MPICC, MPICXX, or MPIF77 output variable to
-dnl the name of the MPI compiler, depending upon the current language.
-dnl (This may just be $CC/$CXX/$F77, but is more often something like
-dnl mpicc/mpiCC/mpif77.) It also sets MPILIBS to any libraries that are
-dnl needed for linking MPI (e.g. -lmpi, if a special
-dnl MPICC/MPICXX/MPIF77 was not found).
-dnl
-dnl If you want to compile everything with MPI, you should set:
-dnl
-dnl     CC="$MPICC" #OR# CXX="$MPICXX" #OR# F77="$MPIF77"
-dnl     LIBS="$MPILIBS $LIBS"
-dnl
-dnl The user can force a particular library/compiler by setting the
-dnl MPICC/MPICXX/MPIF77 and/or MPILIBS environment variables.
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if an MPI
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_MPI.
-dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2004-11-05
-dnl @license GPLWithACException
-
-AC_DEFUN([ACX_MPI], [
-AC_PREREQ(2.50) dnl for AC_LANG_CASE
-
-AC_LANG_CASE([C], [
-	AC_REQUIRE([AC_PROG_CC])
-	AC_ARG_VAR(MPICC,[MPI C compiler command])
-	AC_CHECK_PROGS(MPICC, mpicc hcc mpcc mpcc_r mpxlc cmpicc, $CC)
-	acx_mpi_save_CC="$CC"
-	LAMMPICC="$CC"
-	CC="$MPICC"
-	AC_SUBST(MPICC)
-],
-[C++], [
-	AC_REQUIRE([AC_PROG_CXX])
-	AC_ARG_VAR(MPICXX,[MPI C++ compiler command])
-	AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC mpCC hcp mpxlC mpxlC_r cmpic++, $CXX)
-	acx_mpi_save_CXX="$CXX"
-	LAMMPICXX="$CXX"
-	CXX="$MPICXX"
-	AC_SUBST(MPICXX)
-],
-[Fortran 77], [
-	AC_REQUIRE([AC_PROG_F77])
-	AC_ARG_VAR(MPIF77,[MPI Fortran compiler command])
-	AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf mpf77 mpif90 mpf90 mpxlf90 mpxlf95 mpxlf_r cmpifc cmpif90c, $F77)
-	acx_mpi_save_F77="$F77"
-	LAMMPIF77="$F77"
-	F77="$MPIF77"
-	AC_SUBST(MPIF77)
-])
-
-if test x = x"$MPILIBS"; then
-	AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
-		[C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
-		[Fortran 77], [AC_MSG_CHECKING([for MPI_Init])
-			AC_TRY_LINK([],[      call MPI_Init], [MPILIBS=" "
-				AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])
-fi
-if test x = x"$MPILIBS"; then
-	AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"])
-fi
-if test x = x"$MPILIBS"; then
-	AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"])
-fi
-
-dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the
-dnl latter uses $CPP, not $CC (which may be mpicc).
-AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpi.h])
-	export LAMMPICC="$acx_mpi_save_CC"
-	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-	unset LAMMPICC
-fi],
-[C++], [if test x != x"$MPILIBS"; then
-	AC_MSG_CHECKING([for mpi.h])
-	export LAMMPICXX="$acx_mpi_save_CXX"
-	AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
-		AC_MSG_RESULT(no)])
-	unset LAMMPICXX
-fi])
-
-AC_LANG_CASE([C], [CC="$acx_mpi_save_CC"],
-	[C++], [CXX="$acx_mpi_save_CXX"],
-	[Fortran 77], [F77="$acx_mpi_save_F77"])
-
-AC_SUBST(MPILIBS)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x = x"$MPILIBS"; then
-        $2
-        :
-else
-        ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1])
-        :
-fi
-])dnl ACX_MPI
diff --git a/m4/acx_pthread.m4 b/m4/acx_pthread.m4
deleted file mode 100644
index b7f692a95..000000000
--- a/m4/acx_pthread.m4
+++ /dev/null
@@ -1,235 +0,0 @@
-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-dnl
-dnl This macro figures out how to build C programs using POSIX threads.
-dnl It sets the PTHREAD_LIBS output variable to the threads library and
-dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
-dnl C compiler flags that are needed. (The user can also force certain
-dnl compiler flags/libs to be tested by setting these environment
-dnl variables.)
-dnl
-dnl Also sets PTHREAD_CC to any special C compiler that is needed for
-dnl multi-threaded programs (defaults to the value of CC otherwise).
-dnl (This is necessary on AIX to use the special cc_r compiler alias.)
-dnl
-dnl NOTE: You are assumed to not only compile your program with these
-dnl flags, but also link it with them as well. e.g. you should link
-dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
-dnl $LIBS
-dnl
-dnl If you are only building threads programs, you may wish to use
-dnl these variables in your default LIBS, CFLAGS, and CC:
-dnl
-dnl        LIBS="$PTHREAD_LIBS $LIBS"
-dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-dnl        CC="$PTHREAD_CC"
-dnl
-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
-dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_PTHREAD.
-dnl
-dnl Please let the authors know if this macro fails on any platform, or
-dnl if you have any other suggestions or comments. This macro was based
-dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
-dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
-dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
-dnl We are also grateful for the helpful feedback of numerous users.
-dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2005-01-14
-dnl @license GPLWithACException
-
-AC_DEFUN([ACX_PTHREAD], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_LANG_SAVE
-AC_LANG_C
-acx_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
-        AC_MSG_RESULT($acx_pthread_ok)
-        if test x"$acx_pthread_ok" = xno; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case "${host_cpu}-${host_os}" in
-        *solaris*)
-
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthread or
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
-
-        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
-        ;;
-esac
-
-if test x"$acx_pthread_ok" = xno; then
-for flag in $acx_pthread_flags; do
-
-        case $flag in
-                none)
-                AC_MSG_CHECKING([whether pthreads work without any flags])
-                ;;
-
-                -*)
-                AC_MSG_CHECKING([whether pthreads work with $flag])
-                PTHREAD_CFLAGS="$flag"
-                ;;
-
-		pthread-config)
-		AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
-		if test x"$acx_pthread_config" = xno; then continue; fi
-		PTHREAD_CFLAGS="`pthread-config --cflags`"
-		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-		;;
-
-                *)
-                AC_MSG_CHECKING([for the pthreads library -l$flag])
-                PTHREAD_LIBS="-l$flag"
-                ;;
-        esac
-
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        AC_TRY_LINK([#include <pthread.h>],
-                    [pthread_t th; pthread_join(th, 0);
-                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
-                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
-                    [acx_pthread_ok=yes])
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        AC_MSG_RESULT($acx_pthread_ok)
-        if test "x$acx_pthread_ok" = xyes; then
-                break;
-        fi
-
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$acx_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-	AC_MSG_CHECKING([for joinable pthread attribute])
-	attr_name=unknown
-	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-	    AC_TRY_LINK([#include <pthread.h>], [int attr=$attr;],
-                        [attr_name=$attr; break])
-	done
-        AC_MSG_RESULT($attr_name)
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
-                               [Define to necessary symbol if this constant
-                                uses a non-standard name on your system.])
-        fi
-
-        AC_MSG_CHECKING([if more special flags are required for pthreads])
-        flag=no
-        case "${host_cpu}-${host_os}" in
-            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
-            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
-        esac
-        AC_MSG_RESULT(${flag})
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        # More AIX lossage: must compile with cc_r
-        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
-else
-        PTHREAD_CC="$CC"
-fi
-
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CFLAGS)
-AC_SUBST(PTHREAD_CC)
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_pthread_ok" = xyes; then
-        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
-        :
-else
-        acx_pthread_ok=no
-        $2
-fi
-AC_LANG_RESTORE
-])dnl ACX_PTHREAD
diff --git a/m4/ax_check_gl.m4 b/m4/ax_check_gl.m4
deleted file mode 100644
index 08305c105..000000000
--- a/m4/ax_check_gl.m4
+++ /dev/null
@@ -1,95 +0,0 @@
-dnl @synopsis AX_CHECK_GL
-dnl
-dnl Check for an OpenGL implementation. If GL is found, the required
-dnl compiler and linker flags are included in the output variables
-dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the
-dnl configure option "--with-apple-opengl-framework", which users can
-dnl use to indicate that Apple's OpenGL framework should be used on Mac
-dnl OS X. If Apple's OpenGL framework is used, the symbol
-dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation
-dnl is found, "no_gl" is set to "yes".
-dnl
-dnl @category InstalledPackages
-dnl @author Braden McDaniel <braden@endoframe.com>
-dnl @version 2004-11-15
-dnl @license AllPermissive
-
-AC_DEFUN([AX_CHECK_GL],
-[AC_REQUIRE([AC_PATH_X])dnl
-AC_REQUIRE([ACX_PTHREAD])dnl
-
-#
-# There isn't a reliable way to know we should use the Apple OpenGL framework
-# without a configure option.  A Mac OS X user may have installed an
-# alternative GL implementation (e.g., Mesa), which may or may not depend on X.
-#
-AC_ARG_WITH([apple-opengl-framework],
-            [AC_HELP_STRING([--with-apple-opengl-framework],
-                            [use Apple OpenGL framework (Mac OS X only)])])
-if test "X$with_apple_opengl_framework" = "Xyes"; then
-  AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1],
-            [Use the Apple OpenGL framework.])
-  GL_LIBS="-framework OpenGL"
-else
-  AC_LANG_PUSH(C)
-
-  AX_LANG_COMPILER_MS
-  if test X$ax_compiler_ms = Xno; then
-    GL_CFLAGS="${PTHREAD_CFLAGS}"
-    GL_LIBS="${PTHREAD_LIBS} -lm"
-  fi
-
-  #
-  # Use x_includes and x_libraries if they have been set (presumably by
-  # AC_PATH_X).
-  #
-  if test "X$no_x" != "Xyes"; then
-    if test -n "$x_includes"; then
-      GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"
-    fi
-    if test -n "$x_libraries"; then
-      GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"
-    fi
-  fi
-
-  AC_CHECK_HEADERS([windows.h])
-
-  AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
-  [ax_cv_check_gl_libgl="no"
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lopengl32 -lGL"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
-    AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([[
-# if HAVE_WINDOWS_H && defined(_WIN32)
-#   include <windows.h>
-# endif
-# include <GL/gl.h>]],
-                     [[glBegin(0)]])],
-    [ax_cv_check_gl_libgl="${ax_try_lib}"; break])
-  done
-  LIBS=${ax_save_LIBS}
-  CPPFLAGS=${ax_save_CPPFLAGS}])
-
-  if test "X${ax_cv_check_gl_libgl}" = "Xno"; then
-    no_gl="yes"
-    GL_CFLAGS=""
-    GL_LIBS=""
-  else
-    GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"
-  fi
-  AC_LANG_POP(C)
-fi
-
-AC_SUBST([GL_CFLAGS])
-AC_SUBST([GL_LIBS])
-])dnl
diff --git a/m4/ax_lang_compiler_ms.m4 b/m4/ax_lang_compiler_ms.m4
deleted file mode 100644
index 2b3d5a816..000000000
--- a/m4/ax_lang_compiler_ms.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-dnl @synopsis AX_LANG_COMPILER_MS
-dnl
-dnl Check whether the compiler for the current language is Microsoft.
-dnl
-dnl This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU
-dnl Autoconf implementation.
-dnl
-dnl @category InstalledPackages
-dnl @author Braden McDaniel <braden@endoframe.com>
-dnl @version 2004-11-15
-dnl @license AllPermissive
-
-AC_DEFUN([AX_LANG_COMPILER_MS],
-[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler],
-                [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms],
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER
-       choke me
-#endif
-]])],
-                   [ax_compiler_ms=yes],
-                   [ax_compiler_ms=no])
-ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms
-])])
diff --git a/m4/dune.m4 b/m4/dune.m4
deleted file mode 100644
index 56fbc611c..000000000
--- a/m4/dune.m4
+++ /dev/null
@@ -1,335 +0,0 @@
-#! /bin/sh
-# $Id$
-# checks for dune-headers and everything they need
-
-# TODO
-#
-# - use pkg-config if --enable-localdune is not provided
-
-#   #export PKG_CONFIG_LIBDIR=$with_dune/dune
-#  #PKG_CHECK_MODULES(DUNE, dune)  
-
-AC_DEFUN([DUNE_DISABLE_LIBCHECK],[
-  # hidden feature... --enable-dunelibcheck tells the dune module check to
-  # check only for the headers and not for the libs. This feature is used
-  # when building the web page, because we don't need the libs in this case
-
-  AC_ARG_ENABLE(dunelibcheck,[],,enable_dunelibcheck=yes)
-])
-
-AC_DEFUN([DUNE_MODULE_ADD_SUMMARY_ENTRY],[
-  m4_pushdef([_dune_name], [$1])
-  m4_pushdef([_dune_module], [m4_translit(_dune_name, [-], [_])])
-  m4_pushdef([_DUNE_MODULE], [m4_toupper(_dune_module)])
-  result="$with_[]_dune_module"
-  if test "x$_DUNE_MODULE[]_ROOT" != "x"; then
-	result="$result ($_DUNE_MODULE[]_ROOT)"
-  fi
-  if test "x$_DUNE_MODULE[]_VERSION" != "x"; then
-	result="$result version $_DUNE_MODULE[]_VERSION"
-  fi
-  DUNE_ADD_SUMMARY_MOD_ENTRY(_dune_name,[$result])
-])
-
-m4_define([_dune_sub_version],"`echo $1 | $AWK -F. -v FIELD=$2 '{ print int($FIELD) }'`")
-
-AC_DEFUN([DUNE_PARSE_MODULE_VERSION],[
-  AC_REQUIRE([AC_PROG_AWK])
-
-  m4_pushdef([_dune_name], [$1])
-  m4_pushdef([_dune_version], [$2])
-  m4_pushdef([_dune_module], [m4_translit(_dune_name, [-], [_])])
-  m4_pushdef([_DUNE_MODULE], [m4_toupper(_dune_module)])
-
-  _DUNE_MODULE[]_VERSION=_dune_version
-  _DUNE_MODULE[]_VERSION_MAJOR=_dune_sub_version(_dune_version,1)
-  _DUNE_MODULE[]_VERSION_MINOR=_dune_sub_version(_dune_version,2)
-  _DUNE_MODULE[]_VERSION_REVISION=_dune_sub_version(_dune_version,3)
-
-  AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION, "_dune_version", [Define to the version of] _dune_name)
-  AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION_MAJOR, $_DUNE_MODULE[]_VERSION_MAJOR, [Define to the major version of] _dune_name)
-  AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION_MINOR, $_DUNE_MODULE[]_VERSION_MINOR, [Define to the minor version of] _dune_name)
-  AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION_REVISION, $_DUNE_MODULE[]_VERSION_REVISION, [Define to the revision of] _dune_name)
-
-  m4_popdef([_DUNE_MODULE])
-  m4_popdef([_dune_module])
-  m4_popdef([_dune_version])
-  m4_popdef([_dune_name])
-])
-
-AC_DEFUN([DUNE_CHECK_MODULES],[
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([AC_PROG_CXXCPP])
-  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-  AC_REQUIRE([DUNE_DISABLE_LIBCHECK])
-  AC_REQUIRE([LT_OUTPUT])
-
-  # ____DUNE_CHECK_MODULES_____ ($1)
-
-  m4_pushdef([_dune_name], [$1])
-  m4_pushdef([_dune_module], [m4_translit(_dune_name, [-], [_])])
-  m4_pushdef([_dune_header], [$2])
-  m4_pushdef([_dune_ldpath], [lib])
-  m4_pushdef([_dune_lib],    [m4_translit(_dune_name, [-], [])])
-  m4_pushdef([_dune_symbol], [$3])
-  m4_pushdef([_DUNE_MODULE], [m4_toupper(_dune_module)])
-
-  # switch tests to c++
-  AC_LANG_PUSH([C++])
-
-  # the usual option...
-  AC_ARG_WITH(_dune_name,
-    AC_HELP_STRING([--with-_dune_name=PATH],[_dune_module directory]))
-
-  # backup of flags
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LIBS="$LIBS"
-  ac_save_LDFLAGS="$LDFLAGS"
-  CPPFLAGS=""
-  LIBS=""
-
-  ##
-  ## Where is the module $1?
-  ##
-
-  AC_MSG_CHECKING([for $1 installation or source tree])
-
-  # is a directory set?
-  if test x$with_[]_dune_module = x ; then
-    #
-    # search module $1 via pkg-config
-    #
-    with_[]_dune_module="global installation"
-    if test -z "$PKG_CONFIG"; then
-      AC_MSG_RESULT([failed])
-      AC_MSG_NOTICE([could not search for module _dune_name])
-      AC_MSG_ERROR([pkg-config is required for using installed modules])
-    fi
-    if AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-      _DUNE_MODULE[]_CPPFLAGS="`$PKG_CONFIG --cflags _dune_name`" 2>/dev/null
-      _DUNE_MODULE[]_ROOT="`$PKG_CONFIG --variable=prefix _dune_name`" 2>/dev/null 
-      _DUNE_MODULE[]_VERSION="`$PKG_CONFIG --modversion _dune_name`" 2>/dev/null
-      ifelse(_dune_symbol,,,[
-        _DUNE_MODULE[]_LIBS="-L`$PKG_CONFIG --libs _dune_name`" 2>/dev/null 
-      ])
-      HAVE_[]_DUNE_MODULE=1
-      AC_MSG_RESULT([
-        global installation in $_DUNE_MODULE[]_ROOT])
-    else
-      HAVE_[]_DUNE_MODULE=0
-      AC_MSG_RESULT([not found])
-    fi
-  else
-    #
-    # path for module $1 is specified via command line
-    #
-    if test -d $with_[]_dune_module ; then
-      # expand tilde / other stuff
-      _DUNE_MODULE[]_ROOT=`cd $with_[]_dune_module && pwd`
-
-      # expand search path (otherwise empty CPPFLAGS)
-      if test -d $_DUNE_MODULE[]_ROOT/include/dune; then
-        # Dune was installed into directory given by with-dunecommon
-        _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]_ROOT/include"
-	_DUNE_MODULE[]_VERSION="`PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$_DUNE_MODULE[]_ROOT/lib/pkgconfig $PKG_CONFIG --modversion _dune_name`" 2>/dev/null
-      else
-        _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]_ROOT"
-	_DUNE_MODULE[]_VERSION="`grep Version $_DUNE_MODULE[]_ROOT/dune.module | sed -e 's/^Version: *//'`" 2>/dev/null
-      fi
-      ifelse(_dune_symbol,,,[
-        _DUNE_MODULE[]_LIBS="-L$_DUNE_MODULE[]_ROOT/lib -l[]_dune_lib"
-      ])
-      # set expanded module path
-      with_[]_dune_module="$_DUNE_MODULE[]_ROOT"
-      HAVE_[]_DUNE_MODULE=1
-      AC_MSG_RESULT([
-        found in $_DUNE_MODULE[]_ROOT])
-    else
-      HAVE_[]_DUNE_MODULE=0
-      AC_MSG_RESULT([not found])
-      AC_MSG_ERROR([_dune_name-directory $with_[]_dune_module does not exist])
-    fi
-  fi
-
-  DUNE_CPPFLAGS="$DUNE_CPPFLAGS $_DUNE_MODULE[]_CPPFLAGS"
-  CPPFLAGS="$DUNE_CPPFLAGS"
-  SET_CPPFLAGS="$_DUNE_MODULE[]_CPPFLAGS"
-
-  ##  
-  ## check for an arbitrary header
-  ##
-  AC_CHECK_HEADER([dune/[]_dune_header],
-    [HAVE_[]_DUNE_MODULE=1
-     _DUNE_MODULE[]_CPPFLAGS="$SET_CPPFLAGS"],
-    [HAVE_[]_DUNE_MODULE=0
-     _DUNE_MODULE[]_CPPFLAGS=""
-     if test x$_DUNE_MODULE[]_ROOT != x; then
-       AC_MSG_WARN([$_DUNE_MODULE[]_ROOT does not seem to contain a valid _dune_name (dune/[]_dune_header not found)])]
-     fi
-  )
-
-  ##
-  ## check for lib (if lib name was provided)
-  ##
-  ifelse(_dune_symbol,,AC_MSG_NOTICE([_dune_name does not provide libs]),[
-    if test "x$enable_dunelibcheck" != "xyes"; then
-      AC_MSG_WARN([library check for _dune_name is disabled. DANGEROUS!])
-    fi
-    if test x$HAVE_[]_DUNE_MODULE = x1 -a x$enable_dunelibcheck = "xyes"; then
-
-      # save current LDFLAGS
-      ac_save_LDFLAGS="$LDFLAGS"
-      ac_save_LIBS="$LIBS"
-      ac_save_CXX="$CXX"
-      HAVE_[]_DUNE_MODULE=0
-
-      # define LTCXXCOMPILE like it will be defined in the Makefile
-      LTCXXLINK="./libtool --tag=CXX --mode=link $CXX $CXXFLAGS $LDFLAGS"
-      CXX="$LTCXXLINK"
-
-      # use module LDFLAGS
-      LDFLAGS="$LDFLAGS $DUNE_PKG_LDFLAGS $_DUNE_MODULE[]_LDFLAGS"
-      LIBS="$DUNE_LIBS $_DUNE_MODULE[]_LIBS"
-
-      AC_MSG_CHECKING([for lib[]_dune_lib])
-      AC_TRY_LINK(dnl
-        [#]include<dune/[]_dune_header>,
-        _dune_symbol,
-          [AC_MSG_RESULT([yes])
-           HAVE_[]_DUNE_MODULE=1
-           _DUNE_MODULE[]_LIBS="$LIBS"],
-          [AC_MSG_RESULT([no])
-           HAVE_[]_DUNE_MODULE=0
-		   if test x$_DUNE_MODULE[]_ROOT != x; then
-             AC_MSG_WARN([$with_[]_dune_module does not seem to contain a valid _dune_name (failed to link with lib[]_dune_lib[].la)])]
-           fi
-      )
-
-      # reset variables
-      LDFLAGS="$ac_save_LDFLAGS"
-      LIBS="$ac_save_LIBS"
-      CXX="$ac_save_CXX"
-    fi
-  ])
-
-  # did we succeed?
-  if test x$HAVE_[]_DUNE_MODULE = x1; then
-    # set variables for our modules
-    AC_SUBST(_DUNE_MODULE[]_CPPFLAGS, "$_DUNE_MODULE[]_CPPFLAGS")
-    AC_SUBST(_DUNE_MODULE[]_LDFLAGS, "$_DUNE_MODULE[]_LDFLAGS")
-    AC_SUBST(_DUNE_MODULE[]_LIBS, "$_DUNE_MODULE[]_LIBS")
-    AC_SUBST(_DUNE_MODULE[]_ROOT, "$_DUNE_MODULE[]_ROOT")
-    AC_DEFINE(HAVE_[]_DUNE_MODULE, 1, [Define to 1 if] _dune_name [was found])
-
-    DUNE_PARSE_MODULE_VERSION(_dune_name, $_DUNE_MODULE[]_VERSION)
-
-    # set DUNE_* variables
-    AC_SUBST(DUNE_CPPFLAGS, "$DUNE_CPPFLAGS")
-    AC_SUBST(DUNE_LDFLAGS, "$DUNE_LDFLAGS $_DUNE_MODULE[]_LDFLAGS")
-    AC_SUBST(DUNE_LIBS, "$DUNE_LIBS $_DUNE_MODULE[]_LIBS")
-    
-    # add to global list
-    # only add my flags other flags are added by other packages 
-    DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $_DUNE_MODULE[]_CPPFLAGS"
-    DUNE_PKG_LIBS="$DUNE_PKG_LIBS $LIBS"
-    DUNE_PKG_LDFLAGS="$DUNE_PKG_LDFLAGS $_DUNE_MODULE[]_LDFLAGS"
-
-    with_[]_dune_module="yes"
-  else
-    with_[]_dune_module="no"
-  fi
-
-  # reset previous flags
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LIBS="$ac_save_LIBS"
-
-  # add this module to DUNE_SUMMARY
-  DUNE_MODULE_ADD_SUMMARY_ENTRY(_dune_name)
-
-  # remove local variables
-  m4_popdef([_dune_name])
-  m4_popdef([_dune_module])
-  m4_popdef([_dune_header])
-  m4_popdef([_dune_ldpath])
-  m4_popdef([_dune_lib])
-  m4_popdef([_dune_symbol])
-  m4_popdef([_DUNE_MODULE])
-
-  # restore previous language settings (leave C++)
-  AC_LANG_POP([C++])
-])
-
-AC_DEFUN([DUNE_DEV_MODE],[
-  AC_ARG_ENABLE(dunedevel,
-    AC_HELP_STRING([--enable-dunedevel],[activate Dune-Developer-mode]))
-
-  if test x"$enable_dunedevel" = xyes ; then
-    AC_DEFINE(DUNE_DEVEL_MODE, 1, [Activates developer output])
-  fi
-])
-
-AC_DEFUN([DUNE_SYMLINK],[
-  # create symlink for consistent paths even when $(top_srcdir) is not
-  # called dune/ (if filesystem/OS supports symlinks)
-  AC_PROG_LN_S
-  if test x"$LN_S" = x"ln -s" ; then
-    # Symlinks possible!
- 
-    # Note: we are currently in the build directory which may be != the
-    # source directory
- 
-    # does a file already exist?
-    if test -e dune ; then
-      # exists: is a symlink?
-      if test -L dune ; then
-        if ! test -r dune/$ac_unique_file ; then
-          AC_MSG_ERROR([Symlink 'dune' exists but appears to be wrong! Please remove it manually])
-        fi
-      fi
-    else
-      echo Creating dune-symlink...
-      # set symlink in build directory to sources
-      ln -s $srcdir dune
-
-      # sanity check
-      if ! test -r dune/$ac_unique_file ; then
-        AC_MSG_ERROR([Sanity check for symlink failed! Please send a bugreport to dune@dune-project.org])
-      fi
-    fi 
-  else
-    # no symlinks possible... check name of directory
-    AC_MSG_ERROR([No symlinks supported! You have to install dune. No inplace usage possible!])
-  fi
-])
-
-AC_DEFUN([DUNE_WEB],
-[
-  # special variable to include the documentation into the website
-  AC_ARG_WITH(duneweb,
-    AC_HELP_STRING([--with-duneweb=PATH],[Only needed for website-generation, path to checked out version of dune-web]))
-
-  if test x$with_duneweb != x; then
-     if test x$with_duneweb != xno; then
-       # parameter is set. Check it
-       AC_MSG_CHECKING([whether passed Dune-Web ($with_duneweb) directory appears correct])
-       WEBTESTFILE="$with_duneweb/layout/default.wml"
-       if test -d "$with_duneweb" && test -e "$WEBTESTFILE" ; then
-         AC_MSG_RESULT([ok])
-         # normalize path
-         with_duneweb=`(cd $with_duneweb && pwd)` ;
-       else
-         if test -d "$with_duneweb" ; then
-           AC_MSG_ERROR([$WEBTESTFILE not found in Dune-web dir $with_duneweb!])
-         else
-           AC_MSG_ERROR([Dune-Web directory $with_duneweb not found!])
-         fi
-		 with_duneweb=no
-	   fi
-     fi
-	 DUNE_ADD_SUMMARY_ENTRY([dune web],[$with_duneweb])
-  else
-    with_duneweb=no
-  fi
-  AC_SUBST(DUNEWEBDIR, $with_duneweb)
-  AM_CONDITIONAL(DUNEWEB, test x$with_duneweb != xno)
-])
diff --git a/m4/dune_all.m4 b/m4/dune_all.m4
deleted file mode 100644
index 8dd835694..000000000
--- a/m4/dune_all.m4
+++ /dev/null
@@ -1,85 +0,0 @@
-# $Id$
-
-# this meta-check calls everything needed for Dune to work and all
-# possible components. Applications should use this so that
-# Dune-updates enable new features automagically
-
-# the entries are more or less copied from an "autoscan"-run in the
-# dune-directory
-
-AC_DEFUN([DUNE_CHECK_ALL],[
-  # doxygen and latex take a lot of time...
-  AC_REQUIRE([DUNE_DOCUMENTATION])
-  AC_REQUIRE([DUNE_WEB])
-
-  AC_ARG_ENABLE(enabledist,
-    AC_HELP_STRING([--enable-dist],
-                 [go into create-tarballs-mode [[default=no]]]),
-    [enabledist=$enableval],
-    [enabledist=no]
-  )
-  AM_CONDITIONAL(MAKEDIST, test x$enabledist = xyes)
-  if test x$enabledist = xyes; then
-    AM_CONDITIONAL(DUNEWEB, false)
-  fi
-
-  dnl check dependencies of this module
-  dnl this test is autogenerated for each module
-  AC_REQUIRE([DUNE_CHECK_MOD_DEPENDENCIES])
-
-  # convenience-variables if every found package should be used
-  AC_SUBST(ALL_PKG_LIBS, "$LIBS $DUNE_PKG_LIBS")
-  AC_SUBST(ALL_PKG_LDFLAGS, "$LDFLAGS $DUNE_PKG_LDFLAGS")
-  AC_SUBST(ALL_PKG_CPPFLAGS, "$CPPFLAGS $DUNE_PKG_CPPFLAGS")
-
-  AC_SUBST(ACLOCAL_AMFLAGS, "$ACLOCAL_AMFLAGS")
-
-  AC_SUBST(am_dir, $DUNE_COMMON_ROOT/am)
-])
-
-AC_DEFUN([DUNE_ADD_SUMMARY_ENTRY],[
-  indentlen=24
-  txt="$1"
-  while test `echo "$txt" | tr -d '\n' | wc -c` -lt $indentlen; do txt="$txt."; done
-  txt="$txt: $2"
-  [DUNE_SUMMARY="$DUNE_SUMMARY echo '$txt';"]
-])
-
-AC_DEFUN([DUNE_ADD_SUMMARY_MOD_ENTRY],[
-  indentlen=24
-  txt=$1
-  while test `echo $txt | tr -d '\n' | wc -c` -lt $indentlen; do txt=$txt.; done
-  txt="$txt: $2"
-  [DUNE_MODULES_SUMMARY="$DUNE_MODULES_SUMMARY echo '$txt';"]
-])
-
-AC_DEFUN([DUNE_SUMMARY_ALL],[
-  # show search results
-
-  echo
-  echo "Found the following Dune-components: "
-  echo
-  echo "----------------------------------------"
-  echo  
-  [(eval $DUNE_MODULES_SUMMARY) | sort]
-  [(eval $DUNE_SUMMARY) | sort]
-  echo
-  echo "----------------------------------------"
-  echo
-  echo "See ./configure --help and config.log for reasons why a component wasn't found"
-  echo
-
-])
-
-AC_DEFUN([DUNE_CHECK_ALL_M],[
-        [echo
-        echo "    The build system of your module has called the deprecated method DUNE_CHECK_ALL_M."
-        echo "    Please replace that call (in configure.ac) by a call to DUNE_CHECK_ALL.  If you"
-        echo "    need the dune -> . symlink add DUNE_SYMLINK to your configure.ac."
-        echo "    Press 'enter' to continue!"
-        echo
-        read -u 7]
-  AC_REQUIRE([DUNE_SYMLINK])
-  AC_REQUIRE([DUNE_CHECK_ALL])
-  AC_REQUIRE([DUNE_AUTOBUILD_FLAGS])
-])
diff --git a/m4/dune_autobuild.m4 b/m4/dune_autobuild.m4
deleted file mode 100644
index 94f146d71..000000000
--- a/m4/dune_autobuild.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Add configure flags needed to create log files for dune-autobuild
-#
-
-AC_DEFUN([DUNE_AUTOBUILD_FLAGS],[
-  # special settings for check-log
-  AC_ARG_WITH([hostid],
-    AC_HELP_STRING([--with-hostid=HOST_IDENTIFIER],
-                 [host identifier used for automated test runs]))
-  if test "x$with_hostid" = "xno" ; then 
-    with_hostid="$ac_hostname (`uname -sm`, $COMPILER_NAME)";
-  fi
-
-  AC_SUBST([hostid], [$with_hostid])
-  AC_ARG_WITH([tag],
-    AC_HELP_STRING([--with-tag=TAG],
-                 [tag to use for automated test runs]))
-  if test "x$with_tag" = "xno" ; then with_tag=foo; fi
-    AC_SUBST([tag], [$with_tag])
-  AC_ARG_WITH([revision],
-    AC_HELP_STRING([--with-revision=TAG],
-                 [revision to use for automated test runs]))
-  if test "x$with_revision" = "xno" ; then with_revision=bar; fi
-  AC_SUBST([revision], [$with_revision])
-])
\ No newline at end of file
diff --git a/m4/dune_common.m4 b/m4/dune_common.m4
deleted file mode 100644
index 2bdc56267..000000000
--- a/m4/dune_common.m4
+++ /dev/null
@@ -1,97 +0,0 @@
-AC_DEFUN([DUNE_COMMON_CHECKS],
-[
-  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PROG_CPP])
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([AC_PROG_CXXCPP])
-  AC_REQUIRE([AC_PROG_INSTALL])
-  AC_REQUIRE([AC_PROG_LN_S])
-  AC_REQUIRE([AC_PROG_MAKE_SET])
-  AC_REQUIRE([AC_PROG_RANLIB])
-  AC_REQUIRE([AC_PROG_LIBTOOL])
-  AC_REQUIRE([AC_PROG_AWK])
-
-  AC_REQUIRE([DUNE_CHECK_COMPILER])
-  AC_REQUIRE([GXX0X])
-  AC_REQUIRE([STATIC_ASSERT_CHECK])
-  AC_REQUIRE([NULLPTR_CHECK])
-  AC_REQUIRE([DUNE_LINKCXX])
-  AC_REQUIRE([DUNE_CHECKDEPRECATED])
-  AC_REQUIRE([DUNE_SET_MINIMAL_DEBUG_LEVEL])
-  AC_REQUIRE([DUNE_PATH_XDR])
-  AC_REQUIRE([DUNE_MPI])
-  AC_REQUIRE([DUNE_EXPRTMPL])
-  AC_REQUIRE([DUNE_DEV_MODE])
-
-  dnl check for programs
-  AC_REQUIRE([AC_PROG_CC])
-  # add -Wall if the compiler is gcc
-  if test "$ac_test_CFLAGS" != set && \
-    test "$GCC" = yes; then
-    CFLAGS="$CFLAGS -Wall"
-  fi
-  # add -Wall if the compiler is g++
-  AC_REQUIRE([AC_PROG_CXX])
-  if test "$ac_test_CXXFLAGS" != set && \
-    test "$GXX" = yes; then
-    CXXFLAGS="$CXXFLAGS -Wall"
-  fi
-
-  dnl checks for header files.
-  AC_REQUIRE([AC_HEADER_STDC])
-  AC_LANG_PUSH([C++])
-
-  AC_CHECK_HEADERS([malloc.h string.h])
-
-  # Allow disabling tr1 headers. E.g. needed for broken xlc on Blue Gene
-  AC_ARG_ENABLE(tr1-headers, 
-	AC_HELP_STRING([--disable-tr1-headers], 
-	[Prevents checking for  tr1 headers like tuple, array, etc. 
-	This might be needed for broken compilers like xlc on Blue Gene]), 
-	[], [    
-	  AC_CHECK_HEADERS([type_traits tr1/type_traits array tr1/array tuple tr1/tuple])
-	  ])
-  
-  AC_LANG_POP([C++])
-
-  dnl checks for typedefs, structures, and compiler characteristics.
-  #  doesn't work, but we don't need it currently
-  #  AC_REQUIRE([AC_HEADER_STDBOOL])
-  AC_REQUIRE([AC_C_CONST])
-  AC_REQUIRE([AC_C_INLINE])
-  AC_REQUIRE([AC_TYPE_SIZE_T])
-  AC_REQUIRE([AC_STRUCT_TM])
-
-  dnl check for library functions
-  AC_REQUIRE([AC_FUNC_MALLOC])
-  #  doesn't work, but we don't need it currently
-  #  AC_REQUIRE([AC_FUNC_REALLOC])
-
-  AC_LANG_PUSH([C++])
-  AC_CHECK_LIB([m], [pow])
-  AC_CHECK_FUNCS([sqrt strchr])
-  AC_LANG_POP([C++])
-
-  # check for auxiliary tools so that it's not fatal if they're missing
-  AC_CHECK_PROGS([DOXYGEN], [doxygen], [true])
-  AC_CHECK_PROGS([TEX], [latex], [true])
-  AC_CHECK_PROGS([BIBTEX], [bibtex], [true])
-  AC_CHECK_PROGS([DVIPDF], [dvipdf], [true])
-  AC_CHECK_PROGS([DVIPS], [dvips], [true])
-  AC_CHECK_PROGS([WML], [wml], [true])
-  AM_CONDITIONAL([WML], [test "x$WML" != xtrue])
-  AC_CHECK_PROGS([PERL], [perl], [true])
-  AC_REQUIRE([DUNE_INKSCAPE])
-  AC_CHECK_PROGS([CONVERT], [convert], [true])
-])
-
-AC_DEFUN([DUNE_COMMON_CHECK_MODULE],
-[
-    DUNE_CHECK_MODULES([dune-common], [common/stdstreams.hh],
-	[#ifndef DUNE_MINIMAL_DEBUG_LEVEL 
-   #define DUNE_MINIMAL_DEBUG_LEVEL 1
-   #endif
-	Dune::derr.active();])
-])
diff --git a/m4/dune_compiler.m4 b/m4/dune_compiler.m4
deleted file mode 100644
index 6f8e17da2..000000000
--- a/m4/dune_compiler.m4
+++ /dev/null
@@ -1,58 +0,0 @@
-# $Id$
-# check for supported compilers
-
-AC_DEFUN([DUNE_CHECK_COMPILER],[
-
-AC_ARG_ENABLE(compilercheck,
-  AC_HELP_STRING([--enable-compilercheck],
-                 [check for supported compilers [[default=yes]]]),
-  [compilercheck=$enableval],
-  [compilercheck=yes]
-)
-
-SUPPORTED_COMPILER="gcc (>= 3.4.1) or icc (>= 7.0)"
-
-AC_REQUIRE([AC_PROG_CXX])
-cat >conftest.cc <<_ACEOF
-#include <cstdio>
-
-#if defined __ICC && ! defined CXX_SUPPORTED
-  #if __ICC >= 700
-    #define CXX_SUPPORTED "icc %2.2f", 1.0*__ICC/100
-  #endif
-#endif
-#if defined __GNUC__ && ! defined CXX_SUPPORTED
-  #if __GNUC__ > 3 || \
-     (__GNUC__ == 3 && (__GNUC_MINOR__ > 4 || \
-        (__GNUC_MINOR__ == 4 && \
-         __GNUC_PATCHLEVEL__ >= 1)))
-    #define CXX_SUPPORTED \
-	   "gcc %i.%i.%i", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
-  #endif
-#endif
-#ifndef CXX_SUPPORTED
-  #error Your compiler is not officially supported by dune
-#endif
-int main() { 
-  printf(CXX_SUPPORTED);
-  return 0;
-}
-_ACEOF
-
-if test "x$compilercheck" != "xyes" ; then
-  AC_MSG_WARN([compilercheck is disabled. DANGEROUS!])    
-else
-  if $CXX conftest.cc -o conftest.$ac_exeext >&5; then
-	COMPILER_NAME=`./conftest.$ac_exeext`
-    rm -f conftest.$ac_exeext
-  else
-    AC_MSG_ERROR([Your compiler is not officially supported by dune
-                  dune is known to work with $SUPPORTED_COMPILER])
-  fi
-fi
-
-if test "x$COMPILER_NAME" = "x"; then
-	COMPILER_NAME="unknown compiler"
-fi
-
-])
diff --git a/m4/dune_deprecated.m4 b/m4/dune_deprecated.m4
deleted file mode 100644
index 96172f20e..000000000
--- a/m4/dune_deprecated.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-# $Id$
-
-# Check for the right way to create the deprecated warning
-
-AC_DEFUN([DUNE_CHECKDEPRECATED],[
-	AC_MSG_CHECKING([for __attribute__((deprecated))])
-        AC_LANG_PUSH([C++])
-        AC_TRY_COMPILE([#define DEP __attribute__((deprecated))
-                    class bar { bar() DEP; };
-                    class peng { } DEP;
-                    template <class T>
-                    class t_bar { t_bar() DEP; };
-                    template <class T>
-                    class t_peng { t_peng() {}; } DEP;
-                    void foo() DEP;
-                    void foo() {};],[],
-				   [DUNE_DEPRECATED="__attribute__((deprecated))"
-                    AC_MSG_RESULT(yes)],
-				   [DUNE_DEPRECATED=""
-                    AC_MSG_RESULT(no)])
-
-        AC_LANG_POP([C++])
-
-    AC_DEFINE_UNQUOTED(DUNE_DEPRECATED, $DUNE_DEPRECATED,
-                      [how to create a deprecated warning])
-])
diff --git a/m4/dune_docu.m4 b/m4/dune_docu.m4
deleted file mode 100644
index cdd36b94a..000000000
--- a/m4/dune_docu.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-# searches for documentation 
-AC_DEFUN([DUNE_DOCUMENTATION],[
-
-  # if dist has been build without
-  # documentation then disable documentation 
-  # option by default 
-  DOCU_TAG_FILE="no-documentation.tag"
-  if test -f doc/$DOCU_TAG_FILE ; then 
-    HAS_DOCUMENTATION="no"
-  else 
-    # check whether option is chosen or not 
-    if test x$enable_documentation != xno; then 
-      HAS_DOCUMENTATION="yes"
-    else 
-      HAS_DOCUMENTATION="no"
-    fi
-  fi
-  AC_SUBST(DOCUMENTATION_TAG_FILE, $DOCU_TAG_FILE )
-  AC_ARG_ENABLE(documentation,
-   AC_HELP_STRING([--disable-documentation],[don't generate docs, speeds up the build]))
-  AM_CONDITIONAL(BUILD_DOCS, test x$HAS_DOCUMENTATION = xyes)
-])
diff --git a/m4/dune_exprtmpl.m4 b/m4/dune_exprtmpl.m4
deleted file mode 100644
index e57ce43bd..000000000
--- a/m4/dune_exprtmpl.m4
+++ /dev/null
@@ -1,11 +0,0 @@
-AC_DEFUN([DUNE_EXPRTMPL],[
-  # enable experimental features
-  AC_ARG_ENABLE(expressiontemplates,
-   AC_HELP_STRING([--enable-expressiontemplates],[enable experimental expressiontemplates in dune]))
-  if test x$enable_expressiontemplates = xyes; then
-    AC_DEFINE([DUNE_EXPRESSIONTEMPLATES], [1], 
-      [Define to 1 if the experimental expression templates should be used])
-  fi
-  AM_CONDITIONAL([EXPRESSIONTEMPLATES],
-    [test x$enable_expressiontemplates = xyes])
-])
\ No newline at end of file
diff --git a/m4/dune_griddim.m4 b/m4/dune_griddim.m4
deleted file mode 100644
index 9ecd27596..000000000
--- a/m4/dune_griddim.m4
+++ /dev/null
@@ -1,62 +0,0 @@
-# searches for grid_dim parameter
-
-# asks for grid-dim and pass to ALL_PKG_CPPFLAGS
-AC_DEFUN([DUNE_GRID_DIMENSION],[
-
-# default is disabled 
-  AC_ARG_WITH(grid_dim,
-              AC_HELP_STRING([--with-grid-dim=1|2|3],
-                             [dimension of grid; mainly used to determine grid
-                              dimension during compilation (default=disabled)]),
-                              , with_grid_dim=0)
-  AC_ARG_WITH(world_dim,
-              AC_HELP_STRING([-with-world-dim=1|2|3],
-                             [dimension of world; mainly used to determine grid
-                              dimension during compilation (default=grid-dim)]),
-              , with_world_dim=0)
-
-  AC_ARG_WITH(grid_type,
-            AC_HELP_STRING([--with-grid-type= ALBERTAGRID | ALUGRID_CUBE | ALUGRID_SIMPLEX | ALUGRID_CONFORM | ONEDGRID | SGRID | UGGRID | YASPGRID],
-          [only enabled if grid-dim is given, sets type of grid (default=YASPGRID)]),, with_grid_type=YASPGRID)
-          
-if test x$with_grid_dim != x0 ; then 
-  
-  AC_MSG_CHECKING([grid-dim and grid-type])
-  # make sure that given grid dim is valid 
-  if test x$with_grid_dim != x1 && test x$with_grid_dim != x2 && test x$with_grid_dim != x3 ; then 
-    AC_MSG_ERROR([Delivered grid-dim = $with_grid_dim is not valid. Valid are only 1, 2, or 3 .])
-  fi
-
-  # make sure that given grid type is valid 
-  if test $with_grid_type != "ALBERTAGRID" && 
-     test $with_grid_type != "ALUGRID_CUBE" &&
-     test $with_grid_type != "ALUGRID_SIMPLEX" &&
-     test $with_grid_type != "ALUGRID_CONFORM" &&
-     test $with_grid_type != "ONEDGRID" &&
-     test $with_grid_type != "SGRID" &&
-     test $with_grid_type != "UGGRID" &&
-     test $with_grid_type != "YASPGRID" ; then 
-    AC_MSG_ERROR([Delivered grid-type = $with_grid_type is not valid. Run ./configure --help for valid values.])
-  fi
-
-  variable_griddim="$``(``GRIDDIM``)``"
-  variable_worlddim="$``(``WORLDDIM``)``"
-  griddim_cppflags="-DGRIDDIM=$``(``GRIDDIM``)`` -DWORLDDIM=$``(``WORLDDIM``)`` -D$``(``GRIDTYPE``)``"
-  AC_SUBST(GRIDDIM, $with_grid_dim)
-  if test x$with_world_dim = x0 ; then
-    AC_SUBST(WORLDDIM, $variable_griddim)
-  else
-    AC_SUBST(WORLDDIM, $with_world_dim)
-  fi
-  AC_SUBST(GRIDDIMGRID, $variable_griddim )
-  AC_SUBST(GRIDDIMWORLD, $variable_worlddim )
-  AC_SUBST(GRIDTYPE, $with_grid_type )
-  AC_SUBST(GRIDDIM_CPPFLAGS, $griddim_cppflags)
-  DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $griddim_cppflags"
-  if test x$with_world_dim = x0 ; then
-    AC_MSG_RESULT([yes (GRIDDIM=$GRIDDIM, WORLDDIM=GRIDDIM and GRIDTYPE=$GRIDTYPE)])
-  else
-    AC_MSG_RESULT([yes (GRIDDIM=$GRIDDIM, WORLDDIM=$WORLDDIM and GRIDTYPE=$GRIDTYPE)])
-  fi
-fi 
-])
diff --git a/m4/dune_linkcxx.m4 b/m4/dune_linkcxx.m4
deleted file mode 100644
index 8fc391d9f..000000000
--- a/m4/dune_linkcxx.m4
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-# tries to link c++ objects
-
-AC_DEFUN([DUNE_LINKCXX],[
-
-AC_LANG_PUSH([C++])
-
-AC_MSG_CHECKING([whether compiling C++ code works])
-AC_COMPILE_IFELSE(
-  AC_LANG_SOURCE(
-    [ #include <iostream>
-      int main (int argc, char** argv) { 
-      std::cout << std::endl;
-      }]),
-  [ AC_MSG_RESULT([yes]);
-    AC_MSG_CHECKING([whether linking C++ objects works]);
-	# link from object file
-	ac_old_link=$ac_link
-	ac_link=`echo "$ac_old_link" | sed "s/conftest\.$ac_ext/conftest\.$ac_objext/"`
-	# disable deletion of object file
-	ac_old_objext=$ac_objext;
-	ac_objext="";
-    AC_LINK_IFELSE([],
-      [ AC_MSG_RESULT([yes])],
-      [ AC_MSG_RESULT([no])
-        AC_MSG_ERROR([Could not link C++ code])])
-	ac_objext=$ac_old_objext;
-    ac_link=$ac_old_link;],
-  [ AC_MSG_RESULT([no])
-    AC_MSG_ERROR([Could not compile C++ code])]
-)
-
-AC_LANG_POP([C++])
-
-])
diff --git a/m4/dune_mpi.m4 b/m4/dune_mpi.m4
deleted file mode 100644
index e99f0e16a..000000000
--- a/m4/dune_mpi.m4
+++ /dev/null
@@ -1,186 +0,0 @@
-# $Id$
-
-# wrapper for the autoconf-archive check. Note: compiling MPI-stuff sucks!
-
-# Explanation:
-# ============
-#
-
-# compilation of MPI-programs is normally done by a
-# mpicc/mpiCC-wrapper that adds all options needed. Thus, it may seem
-# possible to just replace the compiler call by the wrapper and
-# everything works. Unfortunately that's not the case: automake and
-# libtool both show strange behaviour.
-#
-# In detail: replacing the compiler globally via ./configure CXX=mpiCC
-# should work (at least I've found reports claiming this) but that is
-# not what we want: mainly, it just adds a level of possible errors
-# (mpiCC from MPICH does _nothing_ if "mpicc -c dummy.cc" is called!)
-# and might introduce nice library-clashes.
-#
-# The next approach would be to include
-#       if MPI
-#         CXX = $(MPICXX)
-#       endif
-# in the Makefile.am where MPI is needed. First, this will change
-# compilations of all binaries in this directory and secondly the
-# dependency-tracking seems to break: the first compilation worked but
-# the second failed with the compiler complaining about mismatching
-# flags... There is no 'program_CXX = ...' in automake but even if
-# there were it would break as well
-#
-# Thus, the best solution is to extract the flags needed for
-# compilation and linking. Unfortunately, the parameters and behaviour
-# of mpicc is not at all consistent over different
-# implementations. For MPICH the parameters -compile_info and
-# -link_info exist (albeit not being documented in the manpage, only
-# in -help), for LAM dummy-calls of compilation and linking together
-# with a -showme parameter (which is called -show in MPICH...) have to
-# be used. Obviously, we have to identify the type of package... this
-# is done via mpiCC-calls for now, I wouldn't be surprised if ths
-# breaks often. Bad luck. Blame the MPI folks for this mess. And blame
-# them a lot. [Thimo 26.8.2004]
-
-# Sometimes ACX_MPI will not be able to find the correct MPI compiler,
-# or sometimes you might have several MPI installations. Specify the
-# MPICC variable to enforce a certain MPI compiler.
-
-# In order to disable the usage of MPI (and make Dune purely
-# sequential) you can supply the option
-#   --disable-parallel
-# [Christian 9.7.2006]
-
-AC_DEFUN([DUNE_MPI],[
-  AC_PREREQ(2.50) dnl for AC_LANG_CASE
-
-  # get compilation script
-  AC_LANG_CASE([C],[
-    dune_mpi_isgnu="$GCC"
-  ],
-  [C++],[
-    dune_mpi_isgnu="$GXX"
-  ])
-
-  AC_LANG_PUSH([C])
-
-  # enable/disable parallel features
-  AC_ARG_ENABLE(parallel,
-    AC_HELP_STRING([--enable-parallel],
-      [Enable the parallel features of Dune. If enabled
-       configure will try to determine your MPI automatically. You can
-       overwrite this setting by specifying the MPICC variable]),
-    [with_parallel=$enableval],
-    [with_parallel=no]
-  )
-  AC_SUBST(ENABLE_PARALLEL, "$with_parallel")
-
-  # disable runtest if we have a queuing system
-  AC_ARG_ENABLE(mpiruntest,
-    AC_HELP_STRING([--disable-mpiruntest],
-      [Don't try to run a MPI program during configure. (This is needed if you depend on a queuing system)]),
-    [mpiruntest=${enableval}],
-    [mpiruntest=yes]
-  )
-
-  with_mpi="no"
-
-  ## do nothing if --disable-parallel is used
-  if test x$with_parallel = xyes ; then
-  
-    ACX_MPI([
-      MPICOMP="$MPICC"
-
-      MPI_CONFIG()
-      MPI_CPPFLAGS="$MPI_CPPFLAGS $MPI_NOCXXFLAGS -DENABLE_MPI=1"
-
-      with_mpi="yes ($MPI_VERSION)"
-    ],[
-      # ACX_MPI didn't find anything
-      with_mpi="no"
-    ])
-  fi # end of MPI identification
-
-  # if an MPI implementation was found..
-  if test x"$with_mpi" != xno ; then
-    ### do a sanity check: can we compile and link a trivial MPI program?
-    AC_MSG_CHECKING([whether compiling with $MPI_VERSION works])
-
-    # store old values
-    ac_save_LIBS="$LIBS"
-    ac_save_CPPFLAGS="$CPPFLAGS"
-    
-    LIBS="$MPI_LIBS"
-    CPPFLAGS="$CPPFLAGS $MPI_CPPFLAGS"
-
-    # try to create MPI program
-    AC_LANG_PUSH([C++])
-    AC_COMPILE_IFELSE(
-      AC_LANG_SOURCE(
-        [ #include <mpi.h>
-          int main (int argc, char** argv) { 
-          MPI_Init(&argc, &argv); 
-          MPI_Finalize(); }]),
-        [ AC_MSG_RESULT([yes]) ],
-        [ AC_MSG_RESULT([no])
-          AC_MSG_ERROR([could not compile MPI testprogram!
-          See config.log for details])
-          with_mpi=no]
-    )
-
-    if test "x$mpiruntest" != "xyes" ; then
-      AC_MSG_WARN([Diabled test whether running with $MPI_VERSION works.])    
-    else
-      AC_MSG_CHECKING([whether running with $MPI_VERSION works])
-      AC_RUN_IFELSE(
-        AC_LANG_SOURCE(
-          [ #include <mpi.h>
-            int main (int argc, char** argv) { 
-            MPI_Init(&argc, &argv); 
-            MPI_Finalize(); }]),
-          [ AC_MSG_RESULT([yes]) ],
-          [ AC_MSG_RESULT([no])
-            AC_MSG_ERROR([could not run MPI testprogram!
-            Did you forget to setup your MPI environment?
-            Some MPI implementations require a special deamon to be running!
-            If you don't want to use MPI you can use --disable-parallel to disable
-            all parallel code in Dune.
-            If you want to use parallel code, but cannot run the MPI run test
-            during configure (This is needed if you depend on a queuing system), you
-            might use the --disable-mpiruntest switch.
-            See config.log for details])
-            with_mpi=no]
-      )
-    fi
-    AC_LANG_POP
-
-    # Check for MPI-2 Standard
-    # We have to provide a dummy lib here as we do not know what the name
-    # of the mpi is. -lm should be save.
-    AC_CHECK_LIB(m,[MPI_Finalized], [AC_DEFINE(MPI_2, 1, [Define to 1 MPI supports MPI-2])])
-
-    # restore variables
-    LIBS="$ac_save_LIBS"
-    CPPFLAGS="$ac_save_CPPFLAGS"
-  fi
-    
-  # set flags
-  if test x"$with_mpi" != xno ; then
-    AC_SUBST(MPI_CPPFLAGS, $MPI_CPPFLAGS)
-    AC_SUBST(MPI_LDFLAGS, $MPI_LDFLAGS)
-    AC_SUBST(MPI_LIBS, $MPI_LIBS)
-    AC_SUBST(MPI_VERSION, $MPI_VERSION)
-    AC_DEFINE(HAVE_MPI,ENABLE_MPI,[Define if you have the MPI library.
-    This is only true if MPI was found by configure 
-    _and_ if the application uses the MPI_CPPFLAGS])
-  else
-    AC_SUBST(MPI_CPPFLAGS, "")
-    AC_SUBST(MPI_LDFLAGS, "")
-    AC_SUBST(MPI_LIBS, "")
-  fi
-
-  AM_CONDITIONAL(MPI, test x"$with_mpi" != xno)
-
-  DUNE_ADD_SUMMARY_ENTRY([MPI],[$with_mpi])
-
-  AC_LANG_POP
-])
diff --git a/m4/dune_streams.m4 b/m4/dune_streams.m4
deleted file mode 100644
index 3eb5510ab..000000000
--- a/m4/dune_streams.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-# $Id: dune_deprecated.m4 1114 2004-11-17 14:00:06Z christi $
-
-# Set the minimal verbosity level. All stream with a level below will
-# get removed by the optimizer.
-
-AC_DEFUN([DUNE_SET_MINIMAL_DEBUG_LEVEL],[
-
-  # VERY_VERBOSE_DEBUG_LEVEL = 1;
-  # VERBOSE_DEBUG_LEVEL = 2;
-  # INFO_DEBUG_LEVEL = 3;
-  # WARN_DEBUG_LEVEL = 4;
-  # GRAVE_DEBUG_LEVEL = 5;
-
-  AC_ARG_WITH(minimal_debug_level,
-    AC_HELP_STRING([--with-minimal-debug-level=[grave|warn|info|verb|vverb]],
-     [set the MINIMAL_DEBUG_LEVEL. Standard debug streams with level below 
-      MINIMAL_DEBUG_LEVEL will collapse to doing nothing if output is 
-      requested. (default=warn)]
-    )
-  )
-
-  MINIMAL_DEBUG_LEVEL=4
-
-  case "$with_minimal_debug_level" in
-    grave)
-      MINIMAL_DEBUG_LEVEL=5
-    ;;
-    warn)
-      MINIMAL_DEBUG_LEVEL=4
-    ;;
-    info)
-      MINIMAL_DEBUG_LEVEL=3
-    ;;
-    verb)
-      MINIMAL_DEBUG_LEVEL=2
-    ;;
-    vverb)
-      MINIMAL_DEBUG_LEVEL=1
-    ;;
-  esac
-
-  AC_DEFINE_UNQUOTED([DUNE_MINIMAL_DEBUG_LEVEL], $MINIMAL_DEBUG_LEVEL,
-    [Standard debug streams with a level below will collapse to doing nothing])
-])
diff --git a/m4/f5.m4 b/m4/f5.m4
deleted file mode 100644
index f63f1e7a7..000000000
--- a/m4/f5.m4
+++ /dev/null
@@ -1,80 +0,0 @@
-# $Id$
-# searches for F5-stuff
-
-AC_DEFUN([DUNE_PATH_F5],[
-  AC_REQUIRE([DUNE_PATH_HDF5])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PATH_XTRA])
-	
-  AC_ARG_WITH(f5,
-    AC_HELP_STRING([--with-f5=PATH],[directory with FiberHDF5 inside]),
-    # expand tilde / other stuff
-    eval with_f5=$with_f5
-  )
-
- # store values
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LDFLAGS="$LDFLAGS"
- ac_save_LIBS="$LIBS"
- LIBS=""
-
- # start building variables
-
- # use special F5-lib-path if it's set
- if test x$with_f5 != x ; then
-   #  extract absolute path
-   if test -d $with_f5; then
-     eval with_f5=`cd $with_f5 ; pwd`
-   else
-     AC_MSG_ERROR([FiberHDF5-directory $with_f5 does not exist])
-   fi
-   F5ARCH="$with_f5/make/arch"
-   AC_MSG_CHECKING([for make/arch])
-   if test -x $F5ARCH ; then
-     AC_MSG_RESULT([yes])
-     LIBS="$HDF5_LIBS -L$with_f5/lib/`$F5ARCH`"
-     F5_LIBS="$LIBS"
-     CPPFLAGS="$CPPFLAGS -I$with_f5"
-   else
-     AC_MSG_RESULT([no])
-     AC_MSG_ERROR([FiberHDF5 installation incomplete ($F5ARCH missing)])
-   fi
- fi
-
- # test for an arbitrary header
- AC_CHECK_HEADER([F5/F5F.h], 
-   [HAVE_F5=1]
-    F5_CPPFLAGS="$CPPFLAGS",
-   [HAVE_F5=0])
-
- # test for lib
- if test x$HAVE_F5 = x1 ; then
-   AC_CHECK_LIB(F5, H5Fopen,
-                [F5_LIBS="-lF5 $HDF5_LIBS"],[HAVE_F5=0], $HDF5_LIBS)
- fi
-
- # pre-set variable for summary
- with_f5="no"
-
- # did we succeed?
- if test x$HAVE_F5 = x1 ; then
-   AC_SUBST(F5_CPPFLAGS, $F5_CPPFLAGS)
-   AC_SUBST(F5_LDFLAGS, $F5_LDFLAGS)
-   AC_SUBST(F5_LIBS, $F5_LIBS)
-   AC_DEFINE(HAVE_F5, 1, [Define to 1 if f5 was found])
-
-   # proudly show in summary
-   with_f5="yes"
- fi
-
- # also tell automake
- AM_CONDITIONAL(FIBER_HDF5, test x$HAVE_F5 = x1)
-
- # reset values					    
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- LDFLAGS="$ac_save_LDFLAGS"
-
- DUNE_ADD_SUMMARY_ENTRY([FiberHDF5],[$with_f5])
-
-])
diff --git a/m4/fortran_overwrite.m4 b/m4/fortran_overwrite.m4
deleted file mode 100644
index 9abe2a47b..000000000
--- a/m4/fortran_overwrite.m4
+++ /dev/null
@@ -1,93 +0,0 @@
-# overwrite an internal function of autoconf
-#
-# The function below caused configure to abort if no fortran was available.
-# Changed it to just report a warning that we cannot compile
-# fortran programms.
-
-# __AC_FC_NAME_MANGLING
-# ---------------------
-# Test for the name mangling scheme used by the Fortran compiler.
-#
-# Sets ac_cv_{f77,fc}_mangling. The value contains three fields, separated
-# by commas:
-#
-# lower case / upper case:
-#    case translation of the Fortran symbols
-# underscore / no underscore:
-#    whether the compiler appends "_" to symbol names
-# extra underscore / no extra underscore:
-#    whether the compiler appends an extra "_" to symbol names already
-#    containing at least one underscore
-#
-AC_DEFUN([__AC_FC_NAME_MANGLING],
-[_AC_FORTRAN_ASSERT()dnl
-AC_CACHE_CHECK([for Fortran name-mangling scheme],
-               ac_cv_[]_AC_LANG_ABBREV[]_mangling,
-[AC_COMPILE_IFELSE(
-[      subroutine foobar()
-      return
-      end
-      subroutine foo_bar()
-      return
-      end],
-[mv conftest.$ac_objext cfortran_test.$ac_objext
-
-  ac_save_LIBS=$LIBS
-  LIBS="cfortran_test.$ac_objext $LIBS $[]_AC_LANG_PREFIX[]LIBS"
-
-  AC_LANG_PUSH(C)dnl
-  ac_success=no
-  for ac_foobar in foobar FOOBAR; do
-    for ac_underscore in "" "_"; do
-      ac_func="$ac_foobar$ac_underscore"
-      AC_LINK_IFELSE([AC_LANG_CALL([], [$ac_func])],
-		     [ac_success=yes; break 2])
-    done
-  done
-  AC_LANG_POP(C)dnl
-
-  if test "$ac_success" = "yes"; then
-     case $ac_foobar in
-	foobar)
-	   ac_case=lower
-	   ac_foo_bar=foo_bar
-	   ;;
-	FOOBAR)
-	   ac_case=upper
-	   ac_foo_bar=FOO_BAR
-	   ;;
-     esac
-
-     AC_LANG_PUSH(C)dnl
-     ac_success_extra=no
-     for ac_extra in "" "_"; do
-	ac_func="$ac_foo_bar$ac_underscore$ac_extra"
-	AC_LINK_IFELSE([AC_LANG_CALL([], [$ac_func])],
-		       [ac_success_extra=yes; break])
-     done
-     AC_LANG_POP(C)dnl
-
-     if test "$ac_success_extra" = "yes"; then
-	ac_cv_[]_AC_LANG_ABBREV[]_mangling="$ac_case case"
-        if test -z "$ac_underscore"; then
-           ac_cv_[]_AC_LANG_ABBREV[]_mangling="$ac_cv_[]_AC_LANG_ABBREV[]_mangling, no underscore"
-	else
-           ac_cv_[]_AC_LANG_ABBREV[]_mangling="$ac_cv_[]_AC_LANG_ABBREV[]_mangling, underscore"
-        fi
-        if test -z "$ac_extra"; then
-           ac_cv_[]_AC_LANG_ABBREV[]_mangling="$ac_cv_[]_AC_LANG_ABBREV[]_mangling, no extra underscore"
-	else
-           ac_cv_[]_AC_LANG_ABBREV[]_mangling="$ac_cv_[]_AC_LANG_ABBREV[]_mangling, extra underscore"
-        fi
-      else
-	ac_cv_[]_AC_LANG_ABBREV[]_mangling="unknown"
-      fi
-  else
-     ac_cv_[]_AC_LANG_ABBREV[]_mangling="unknown"
-  fi
-
-  LIBS=$ac_save_LIBS
-  rm -f cfortran_test* conftest*],
-  [AC_MSG_WARN([cannot compile a simple Fortran program])])
-])
-])# __AC_FC_NAME_MANGLING
diff --git a/m4/grape.m4 b/m4/grape.m4
deleted file mode 100644
index aa431070a..000000000
--- a/m4/grape.m4
+++ /dev/null
@@ -1,101 +0,0 @@
-# $Id$
-# searches for albert-headers and libs
-
-# grape.h und libgr.a/libgr.so are located in the same discretory 
-
-AC_DEFUN([DUNE_PATH_GRAPE],[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PATH_XTRA])
-  AC_REQUIRE([DUNE_PATH_OPENGL])
-  AC_REQUIRE([AC_PROG_LD_GNU])
-
-  AC_ARG_WITH(grape,
-    AC_HELP_STRING([--with-grape=PATH],[directory with Grape inside]))
-
-# store old values
-ac_save_LDFLAGS="$LDFLAGS"
-ac_save_CPPFLAGS="$CPPFLAGS"
-ac_save_LIBS="$LIBS"
-
-# don't even start testing if X wasn't found
-if test "x$X_LIBS" != x && test x$with_grape != xno ; then
-
-  LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
-
-  # is --with-grape=bla used?
-  if test x$with_grape != x ; then
-    if test -d $with_grape; then
-      # expand tilde / other stuff
-      GRAPEROOT=`cd $with_grape && pwd`
-    else
-      AC_MSG_ERROR([directory $with_grape does not exist])
-    fi      
-  else
-    # set some kind of default grape-path...
-    GRAPEROOT="/usr/local/grape/"
-  fi
-
-  CPPFLAGS="$CPPFLAGS -I$GRAPEROOT"
-  LIBS="$LIBS -L$GRAPEROOT"
-
-  # check for header
-  # we have to use CC for checking the header!!
-  AC_LANG_PUSH([C])
-  AC_CHECK_HEADER([grape.h],
-    [GRAPE_CPPFLAGS="-I$GRAPEROOT"
-     HAVE_GRAPE="1"])
-  AC_LANG_POP
-
-  # check for lib if header was found
-  if test x$HAVE_GRAPE = x1 ; then
-    # if GL was found, add it implicitly...
-    #   This is not the best choice, but testing without GL first and
-    #   then trying again fails due to caching...
-    CPPFLAGS="$GRAPE_CPPFLAGS $GL_CFLAGS"
-    LIBS="$LIBS $GL_LIBS -lXext"
-    LDFLAGS="$LDFLAGS $GL_LDFLAGS"
-
-    # if we use the gnu linker add the grape path 
-    if test x$lt_cv_prog_gnu_ld = xyes ; then 
-      GRAPE_LINKER_FLAGS="-Wl,--rpath -Wl,$GRAPEROOT"
-    fi  
-
-    AC_CHECK_LIB(gr, grape, 
-      [GRAPE_LDFLAGS="$GL_LDFLAGS $GRAPE_LINKER_FLAGS"
-       GRAPE_CPPFLAGS="$CPPFLAGS"
-       GRAPE_LIBS="-L$GRAPEROOT -lgr $GL_LIBS -lXext"], 
-      [HAVE_GRAPE="0"])
-  fi
-
-  # did it work?
-  if test x$HAVE_GRAPE = x1 ; then
-    AC_SUBST(GRAPE_LIBS, $GRAPE_LIBS)
-    AC_SUBST(GRAPE_LDFLAGS, $GRAPE_LDFLAGS)
-    AC_SUBST(GRAPE_CPPFLAGS, $GRAPE_CPPFLAGS)
-    AC_DEFINE(HAVE_GRAPE, 1, [Define to 1 if grape-library is found])
-
-    # add to global list
-    DUNE_PKG_LDFLAGS="$DUNE_PKG_LDFLAGS $GRAPE_LDFLAGS"
-    DUNE_PKG_LIBS="$DUNE_PKG_LIBS $GRAPE_LIBS"
-    DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $GRAPE_CPPFLAGS"
-  fi
-fi
-
-# report to summary
-if test x$HAVE_GRAPE = x1 ; then
-  with_grape="yes"
-else
-  with_grape="no"
-fi
-
-# also tell automake	
-AM_CONDITIONAL(GRAPE, test x$HAVE_GRAPE = x1)
-
-# reset old values
-LIBS="$ac_save_LIBS"
-CPPFLAGS="$ac_save_CPPFLAGS"
-LDFLAGS="$ac_save_LDFLAGS"
-  
-DUNE_ADD_SUMMARY_ENTRY([Grape],[$with_grape])
-
-])
diff --git a/m4/hdf5.m4 b/m4/hdf5.m4
deleted file mode 100644
index a61a8436a..000000000
--- a/m4/hdf5.m4
+++ /dev/null
@@ -1,84 +0,0 @@
-# $Id$
-# searches for HDF5-stuff
-
-AC_DEFUN([DUNE_PATH_HDF5],[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PATH_XTRA])
-  AC_REQUIRE([DUNE_MPI])
-
-  AC_ARG_WITH(hdf5,
-    AC_HELP_STRING([--with-hdf5=PATH],[directory with HDF5 inside]),
-    # expand tilde / other stuff
-    eval with_hdf5=$with_hdf5
-  )
-	  
-  AC_ARG_WITH(hdf5_libs,
-    [AC_HELP_STRING([--with-hdf5-libs=LIBS],[additional libraries needed to link hdf5 programs. Those might be needed if your hdf5 library is static. Possible values are: -lz or -lz -lsz.])],[])
-
- # store values
- ac_save_CFLAGS="$CFLAGS"
- ac_save_CPPFLAGS="$CPPFLAGS"
- ac_save_LDFLAGS="$LDFLAGS"
- ac_save_LIBS="$LIBS"
- LIBS=""
-
- # start building variables
-
- # use special HDF5-lib-path if it's set
- if test x$with_hdf5 != x ; then
-   #  extract absolute path
-   if test -d $with_hdf5; then
-     eval with_hdf5=`cd $with_hdf5 ; pwd`
-   else
-     AC_MSG_ERROR([HDF5-directory $with_hdf5 does not exist])
-   fi
-   LIBS="$LIBS -L$with_hdf5/lib"
-   HDF5_LIBS="$LIBS"
-   CPPFLAGS="$CPPFLAGS -I$with_hdf5/include"
- fi
-
- # test if we are parallel
- AC_CHECK_DECL(H5_HAVE_PARALLEL, [dnl
-	LIBS="$LIBS $MPI_LIB"
-	LDFLAGS="$LDFLAGS $MPI_LDFLAGS"
-	CPPFLAGS="$CPPFLAGS $MPI_CPPFLAGS"
-	HDF5_PARALLEL=1],[],[#include"H5pubconf.h"])
-
- # test for an arbitrary header
- AC_CHECK_HEADER([hdf5.h], 
-   [HAVE_HDF5=1]
-    HDF5_CPPFLAGS="$CPPFLAGS",
-   [HAVE_HDF5=0])
-	
- # test for lib
- if test x$HAVE_HDF5 = x1 ; then
-   AC_CHECK_LIB(hdf5, H5open,[HDF5_LIBS="-lhdf5 $with_hdf5_libs"],
-     [HAVE_HDF5=0], ["$with_hdf5_libs"])
- fi
-
- # pre-set variable for summary
- with_hdf5="no"
-
- # did we succeed?
- if test x$HAVE_HDF5 = x1 ; then
-   AC_SUBST(HDF5_CPPFLAGS, $HDF5_CPPFLAGS)
-   AC_SUBST(HDF5_LDFLAGS, $HDF5_LDFLAGS)
-   AC_SUBST(HDF5_LIBS, $HDF5_LIBS)
-   AC_DEFINE(HAVE_HDF5, 1, [Define to 1 if hdf5 was found])
-
-   # proudly show in summary
-   with_hdf5="yes"
- fi
-
- # also tell automake
- AM_CONDITIONAL(HDF5, test x$HAVE_HDF5 = x1)
-
- # reset values					    
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- LDFLAGS="$ac_save_LDFLAGS"
- CPPFLAGS="$ac_save_CPPFLAGS"
-
- DUNE_ADD_SUMMARY_ENTRY([HDF5],[$with_hdf5])
-
-])
diff --git a/m4/immdx_lib_metis.m4 b/m4/immdx_lib_metis.m4
deleted file mode 100644
index cacf6ec9f..000000000
--- a/m4/immdx_lib_metis.m4
+++ /dev/null
@@ -1,127 +0,0 @@
-dnl @synopsis IMMDX_LIB_METIS([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-dnl
-dnl This macro searches for the METIS library in the user specified
-dnl location. The user may specify the location either by defining the
-dnl environment variable METIS or by using the --with-metis option to
-dnl configure. If the environment variable is defined it has precedent
-dnl over everything else. If no location was specified then it searches
-dnl in /usr/lib and /usr/local/lib for the library and in /usr/include
-dnl and /usr/local/include for the header files. Upon sucessful
-dnl completion the variables METIS_LIB and METIS_INCLUDE are set.
-dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a METIS
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_METIS. If ACTION-IF-NOT-FOUND is
-dnl not specified then an error will be generated halting configure.
-dnl
-dnl @category InstalledPackages
-dnl @author Ben Bergen <ben@cs.fau.de>
-dnl @version 2003-01-19
-dnl @license AllPermissive
-
-AC_DEFUN([IMMDX_LIB_METIS], [
-	AC_MSG_CHECKING(for METIS library)
-	AC_REQUIRE([AC_PROG_CC])
-	#
-	# User hints...
-	#
-	AC_ARG_VAR([METIS], [METIS library location])
-	AC_ARG_WITH([metis],
-		[AC_HELP_STRING([--with-metis],
-		[user defined path to METIS library])],
-		[
-			if test -n "$METIS" ; then
-				AC_MSG_RESULT(yes)
-				with_metis=$METIS
-			elif test "$withval" != no ; then
-				AC_MSG_RESULT(yes)
-				with_metis=$withval
-			else
-				AC_MSG_RESULT(no)
-			fi
-		],
-		[
-			if test -n "$METIS" ; then
-				with_metis=$METIS
-				AC_MSG_RESULT(yes)
-			else
-				with_metis=/usr
-				if test ! -f "$with_metis/include/metis.h" ; then
-					with_metis=/usr/local
-					if test ! -f "$with_metis/include/metis.h" ; then
-						with_metis=""
-						AC_MSG_RESULT(failed)
-					else
-						AC_MSG_RESULT(yes)
-					fi
-				else
-					AC_MSG_RESULT(yes)
-				fi
-			fi
-		])
-	#
-	# locate METIS library
-	#
-		if test -n "$with_metis" ; then
-			old_CFLAGS=$CFLAGS
-			old_LDFLAGS=$LDFLAGS
-			old_LIBS=$LIBS
-
-			if test -f "$with_metis/include/metis.h"; then
-				lib_path="/lib"
-				include_path="/include"
-			fi
-
-			if test -f "$with_metis/Lib/metis.h"; then
-				# catch bad convention in the downloadable metis version
-				lib_path=""
-				include_path="/Lib"
-			fi
-			CFLAGS="-I$with_metis/$include_path"
-			LIBS="-L$with_metis/$lib_path"
-
-			AC_LANG_SAVE
-			AC_LANG_C
-
-			AC_CHECK_LIB(metis, METIS_PartMeshDual,
-				[metis_lib=yes], [metis_lib=no], [-lm])
-			
-
-			AC_CHECK_HEADER(metis.h, [metis_h=yes],
-				[metis_h=no], [/* check */])
-			echo x$metis_h
-
-			AC_LANG_RESTORE
-
-			CFLAGS=$old_CFLAGS
-			LDFLAGS=$old_LDFLAGS
-			LIBS=$old_LIBS
-
-			AC_MSG_CHECKING(METIS in $with_metis)
-			if test "$metis_lib" = "yes" -a "$metis_h" = "yes" ; then
-				AC_SUBST(METIS_INCLUDE, [-I$with_metis$include_path])
-				AC_SUBST(METIS_LDFLAGS, [])
-				AC_SUBST(METIS_LIB, [-L$with_metis$lib_path -lmetis])
-				AC_MSG_RESULT(ok)
-			else
-				AC_MSG_RESULT(failed)
-			fi
-		fi
-		#
-		#
-		#
-		
-		# tell automake
-		AM_CONDITIONAL(METIS, test x$METIS_LIB = x1)
-		if test x = x"$METIS_LIB" ; then
-			with_metis=no
-			ifelse([$2],,[AC_MSG_WARN(Failed to find valid METIS library)],[$2])
-			:
-		else
-			with_metis=yes
-			ifelse([$1],,[AC_DEFINE(HAVE_METIS,1,[Define if you have METIS library])
-		],[$1])
-			:
-		fi
-	])dnl IMMDX_LIB_METIS
diff --git a/m4/inkscape.m4 b/m4/inkscape.m4
deleted file mode 100644
index 3fd49e249..000000000
--- a/m4/inkscape.m4
+++ /dev/null
@@ -1,9 +0,0 @@
-# $Id$
-
-# Check for inkscape and define automake conditional
-
-AC_DEFUN([DUNE_INKSCAPE],[
-	AC_CHECK_PROG([INKSCAPE], [inkscape], [inkscape], [no])
-	AC_ARG_VAR([INKSCAPE], [path to inkscape to regenerate .png's from .svg's.])
-	AM_CONDITIONAL([INKSCAPE], [test "x$INKSCAPE" != xfalse && test "x$INKSCAPE" != xno])
-])
diff --git a/m4/mpi-config.m4 b/m4/mpi-config.m4
deleted file mode 100644
index 9c1cb247c..000000000
--- a/m4/mpi-config.m4
+++ /dev/null
@@ -1,301 +0,0 @@
-AC_DEFUN([MPI_CONFIG_HELPER],[
-
-mpi_trybuild () {
-  $MPICC ${1} > /dev/null 2>&1 || return 1
-  return 0
-}
-
-mpi_preprocess () {
-  $MPICC -E -c ${1} 2> /dev/null
-}
-
-mpi_getflags () {
-  # -- call mpiCC, remove compiler name
-  # compiler-name is first word in line _if_ it doesn't start with a dash!
-  # needed because mpiCC sometimes does not include compiler (newer LAM)
-
-  # the additional brackets keep m4 from interpreting the brackets
-  # in the sed-command...
-  retval=`$MPICC ${1} ${2} 2>/dev/null | head -1`
-  # remove compiler name
-  retval=`echo $retval | sed -e 's/^[[^-]][[^ ]][[^ ]]* //'`
-  # remove dummy-parameter (if existing)
-  retval=`echo $retval | sed -e "s/ ${1} / /"`
-  if test ${#} = 2 ; then
-    retval=`echo $retval | sed -e "s/ ${2} / /"`
-  fi
-}
-
-# removes regexp $2 from string $1
-mpi_remove () {
-  retval=`echo ${1} | sed -e "s/ ${2} / /"`
-  # string to remove might be on the beginning of the line
-  retval=`echo ${retval} | sed -e "s/^${2} / /"`
-}
-
-test_lam () {
-  AC_MSG_CHECKING([for lam])
-  cat >conftest.c <<_EOF
-#include <mpi.h>
-#include <stdio.h>
-
-int main() {
-  printf ("%i%i\n", LAM_MAJOR_VERSION, LAM_MINOR_VERSION);
-  return 0;
- }
-_EOF
-
-  if mpi_trybuild "-c conftest.c"; then
-    # try new -showme:xxx function
-    mpi_getflags "-showme:compile"
-    if test x"$retval" != x ; then
-      # seems like LAM >= 7.1 which supports extraction of parameters without
-      # dummy files
-      MPI_VERSION="LAM >= 7.1"
-      MPI_CPPFLAGS="$retval"
-      mpi_getflags "-showme:link"
-      MPI_LIBS="$retval"
-    else
-      MPI_VERSION="LAM < 7.1"
-      # use -showme and dummy parameters to extract flags        
-      mpi_getflags "-showme" "-c $MPISOURCE"
-      MPI_CPPFLAGS="$retval"
-      mpi_getflags "-showme" "dummy.o -o dummy"
-      MPI_LIBS="$retval"
-    fi
-    # hack in option to disable LAM-C++-bindings...
-    # we fake to have mpicxx.h read already
-    MPI_NOCXXFLAGS="-DMPIPP_H"
-    AC_MSG_RESULT([yes])
-    rm -f conftest*
-    return 0    
-  fi
-
-  rm -f conftest*
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-mpi_getmpichflags() {
-    # use special commands to extract options      
-    mpi_getflags "-compile_info"
-    MPI_CPPFLAGS="$retval"
-    # remove implicitly set -c
-    mpi_remove "$MPI_CPPFLAGS" '-c'
-    MPI_CPPFLAGS="$retval"
-    
-    # get linker options
-    mpi_getflags "-link_info"
-    MPI_LIBS="$retval"
-    # strip -o option
-    mpi_remove "$MPI_LIBS" "-o"
-    MPI_LIBS="$retval"
-    #strip MPI_CPPFLAGS (which are included for mpich2 on jugene)
-    enc=`echo "$MPI_CPPFLAGS" | sed -e 's/\\//\\\\\\//g'`
-    MPI_LIBS=`echo "$MPI_LIBS" | sed -e "s/$enc / /"`
-
-
-    # hack in option to disable MPICH-C++-bindings...
-    MPI_NOCXXFLAGS="-DMPICH_SKIP_MPICXX"
-}
-
-mpi_getmpich2flags() {
-    # use special commands to extract options      
-    mpi_getflags "-show" "-c"
-    MPI_CPPFLAGS="$retval"
-    # remove implicitly set -c
-    mpi_remove "$MPI_CPPFLAGS" '-c'
-    MPI_CPPFLAGS="$retval"
-    
-    # get linker options
-    mpi_getflags "-show" "-o"
-    MPI_LIBS="$retval"
-    # strip -o option
-    mpi_remove "$MPI_LIBS" "-o"
-    MPI_LIBS="$retval"
-    #strip MPI_CPPFLAGS (which are included for mpich2 on jugene)
-    enc=`echo "$MPI_CPPFLAGS" | sed -e 's/\\//\\\\\\//g'`
-    MPI_LIBS=`echo "$retval" | sed -e "s/$enc / /"`
-
-
-    # hack in option to disable MPICH-C++-bindings...
-    MPI_NOCXXFLAGS="-DMPICH_SKIP_MPICXX"
-}
-
-test_mpich () {
-  AC_MSG_CHECKING([for mpich])
-  cat >conftest.c <<_EOF
-#include <mpi.h>
-
-int main() { return 0; }
-_EOF
-
-  if (mpi_preprocess conftest.c \
-      | grep -q MPICHX_PARALLELSOCKETS_PARAMETERS); then
-    MPI_VERSION="MPICH"
-    mpi_getmpichflags
-
-    AC_MSG_RESULT([yes])
-    rm -f conftest*
-    return 0    
-  fi
-
-  rm -f conftest*
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-test_mpich2 () {
-  AC_MSG_CHECKING([for mpich2])
-  cat >conftest.c <<_EOF
-#include <mpi.h>
-#include <stdio.h>
-int main() { printf ("%s\n", MPICH2_VERSION); return 0; }
-_EOF
-
-  if mpi_trybuild "-c conftest.c"; then
-    MPI_VERSION="MPICH2"
-    mpi_getmpich2flags
-
-    AC_MSG_RESULT([yes])
-    rm -f conftest*
-    return 0    
-  fi
-
-  rm -f conftest*
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-test_openmpi () {
-  AC_MSG_CHECKING([for OpenMPI])
-  cat >conftest.c <<_EOF
-#include <mpi.h>
-
-int main() { return 0; }
-_EOF
-
-  if (mpi_preprocess conftest.c | grep -q ompi_communicator_t); then
-    MPI_VERSION="OpenMPI"
-
-    mpi_getflags "-showme:compile"
-    MPI_CPPFLAGS="$retval"
-    mpi_getflags "-showme:link"
-    MPI_LIBS="$retval"
-    MPI_NOCXXFLAGS="-DMPIPP_H"
-
-    AC_MSG_RESULT([yes])
-    rm -f conftest*
-    return 0    
-  fi
-
-  rm -f conftest*
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-test_mvapich() {
-  AC_MSG_CHECKING([for MVAPICH])
-  if $MPICC -v -c conftest.c > /dev/null 2>&1; then
-    mpi_getflags "-v" "-c dummy.c"
-    MPI_VERSION=`echo $retval | sed -e 's/for \(MVAPICH[[0-9]][[0-9]]*\)-[[0-9.]][[0-9.]]*/\1/'`
-    if (echo $MPI_VERSION | grep ^MVAPICH>/dev/null);then
-      ADDFLAGS="-DMPICH_IGNORE_CXX_SEEK"
-      mpi_getflags "-compile_info $ADDFLAGS" "dummy.o -o dummy"
-      MPI_CPPFLAGS="$retval"
-      mpi_getflags "-link_info $ADDFLAGS" "dummy.o -o dummy"
-      MPI_LIBS="$retval"
-      AC_MSG_RESULT([yes])
-      rm -f conftest*
-      return 0 
-    fi
-  fi
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-test_ibmmpi() {
-  AC_MSG_CHECKING([for IBM MPI])
-  if $MPICC -v -c conftest.c > /dev/null 2>&1; then
-    mpi_getflags "-v" "-c dummy.c"
-    if (echo $retval | grep '^xl[[cC]]'); then
-      MPI_VERSION="IBM MPI"
-
-      # get compilation script
-#      AC_LANG_CASE([C],[
-#        MPICOMP="$MPICC"
-#        dune_mpi_isgnu="$GCC"
-#      ],
-#      [C++],[
-#        MPICOMP="$MPICXX"
-#        dune_mpi_isgnu="$GXX"
-#      ])
-      # mpCC assumes xlc is used...
-#      if test x$dune_mpi_isgnu = xyes ; then
-#        # change commandline if GNU compiler is used
-#        retval=`echo $retval | sed -e 's/\(-b[[^ ]]*\)/-Xlinker \1/g'`
-#      fi
-      MPI_CPPFLAGS="$retval"
-  
-      mpi_getflags "-v" "dummy.o -o dummy"
-
-#      if test x$dune_mpi_isgnu = xyes ; then
-#        # change commandline if GNU compiler is used
-#        retval=`echo $retval | sed -e 's/\(-b[[^ ]]*\)/-Xlinker \1/g'`
-#      fi
-
-      MPI_LIBS="$retval"
-
-      AC_MSG_RESULT([yes])
-      rm -f conftest*
-      return 0  
-    fi
-  fi
-  
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-test_intelmpi() {
-  AC_MSG_CHECKING([for Intel MPI])
-  if $MPICC -v -c conftest.c > /dev/null 2>&1; then
-    mpi_getflags "-v"
-    if (echo $retval | grep 'Intel(R) MPI Library'); then
-      MPI_VERSION="Intel MPI"
-      mpi_getflags "-show"
-      MPI_CPPFLAGS="$retval"
-      MPI_LIBS="$retval"
-      AC_MSG_RESULT([yes])
-      rm -f conftest*
-      return 0
-    fi
-  fi
-
-  AC_MSG_RESULT([no])
-  return 1
-}
-
-get_mpiparameters() {
-  AC_MSG_NOTICE([Trying to identify the version of MPI compiler $MPICC])
-
-  if test x"$MPI_VERSION" != x; then
-    return
-  fi 
-
-  test_lam && return
-  test_mpich && return
-  test_openmpi && return
-  test_mvapich && return
-  test_mpich2 && return
-  test_ibmmpi && return
-  test_intelmpi && return
-   
-  MPI_VERSION="unknown"
-  AC_MSG_ERROR([Could not identify MPI-package! Please send a bugreport and tell us what MPI-package you're using.])
-}
-])
-
-AC_DEFUN([MPI_CONFIG],[
-  AC_REQUIRE([MPI_CONFIG_HELPER])  
-  get_mpiparameters;
-])
diff --git a/m4/opengl.m4 b/m4/opengl.m4
deleted file mode 100644
index 33ebac3c7..000000000
--- a/m4/opengl.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-# $Id$
-# searches for OpenGL-stuff
-
-AC_DEFUN([DUNE_PATH_OPENGL],[
-dnl use test from autoconf-archive
-  AC_REQUIRE([AX_CHECK_GL])
-
-  # GL_LIBS and GL_CFLAGS already set correctly, they implicitly
-  # contain pthread support!
-
-  # variable for summary
-  with_opengl="no"
-  if test "$no_gl" != "yes" ; then 
-    with_opengl="yes"
-
-    # need pthreads-stuff in linker commandline as well
-    AC_SUBST(GL_LDFLAGS, $PTHREAD_CFLAGS)
-  fi
-
-  DUNE_ADD_SUMMARY_ENTRY([OpenGL],[$with_opengl])
-])
diff --git a/m4/pardiso.m4 b/m4/pardiso.m4
deleted file mode 100644
index c784c14fe..000000000
--- a/m4/pardiso.m4
+++ /dev/null
@@ -1,53 +0,0 @@
-AC_DEFUN([DUNE_PARDISO], [
-AC_PREREQ(2.50)
-dnl this will set the variable FLIBS (*not* ..._LDFLAGS)
-AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
-AC_REQUIRE([ACX_LAPACK])
-acx_pardiso_ok=no
-
-AC_ARG_WITH(pardiso,
-    [AC_HELP_STRING([--with-pardiso=<lib>], [use PARDISO library <lib>])])
-case $with_pardiso in
-    yes | "") ;;
-    no) acx_pardiso_ok=disable ;;
-    -* | */* | *.a | *.so | *.so.* | *.o) PARDISO_LIBS="$with_pardiso" ;;
-    *) PARDISO_LIBS="-l$with_pardiso" ;;
-esac
-# Get fortran linker names of PARDISO functions to check for.
-AC_F77_FUNC(pardisoinit)
-acx_pardiso_save_LIBS="$LIBS"
-LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
-
-# First, check PARDISO_LIBS environment variable
-if test $acx_pardiso_ok = no; then
-if test "x$PARDISO_LIBS" != x; then
-    save_LIBS="$LIBS"; LIBS="$PARDISO_LIBS $LIBS"
-    AC_MSG_CHECKING([for $pardisoinit in $PARDISO_LIBS])
-    AC_TRY_LINK_FUNC($pardisoinit, [dnl
-	# add to global list
-	DUNE_PKG_LIBS="$DUNE_PKG_LIBS $PARDISO_LIBS $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
-	acx_pardiso_ok=yes], 
-	[PARDISO_LIBS=""])
-    AC_MSG_RESULT($acx_pardiso_ok)
-    LIBS="$save_LIBS"
-fi
-fi
-
-# tell automake	
-AM_CONDITIONAL(PARDISO, test $acx_pardiso_ok = yes)
-
-AC_SUBST(PARDISO_LIBS)
-
-LIBS="$acx_pardiso_save_LIBS"
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_pardiso_ok" = xyes; then
-        ifelse([$1],,AC_DEFINE(HAVE_PARDISO,1,[Define if you have a
-PARDISO library.]),[$1])
-        :
-else
-        acx_pardiso_ok=no
-        $2
-fi
-])dnl SET_PARDISO
-
diff --git a/m4/parmetis.m4 b/m4/parmetis.m4
deleted file mode 100644
index 063e2e49b..000000000
--- a/m4/parmetis.m4
+++ /dev/null
@@ -1,150 +0,0 @@
-#! /bin/bash
-# $Id$
-# searches for ParMetis headers and libs
-
-AC_DEFUN([DUNE_PATH_PARMETIS],[
-  AC_MSG_CHECKING(for ParMETIS library)
-  AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([AC_PATH_XTRA])
-  AC_REQUIRE([DUNE_MPI])
-
-  #
-  # USer hints ...
-  #
-  AC_ARG_VAR([PARMETIS], [ParMETIS library location])
-  AC_ARG_WITH([parmetis],
-    [AC_HELP_STRING([--with-parmetis],[user defined path to ParMETIS library])],
-    [
-	if test -n "$PARMETIS" ; then
-	    AC_MSG_RESULT(yes)
-	    with_parmetis=$PARMETIS
-	elif test "$withval" != no ; then
-	    # get absolute path
-	    with_parmetis=`eval cd $withval 2>&1 && pwd`
-	    AC_MSG_RESULT(yes)
-	else
-	    AC_MSG_RESULT(no)
-	fi
-	],
-    [
-	if test -n "$PARMETIS" ; then
-	    with_parmetis=$PARMETIS
-	    AC_MSG_RESULT(yes)
-	else
-	    with_parmetis=/usr/
-	    include_path=include
-	    lib_path=lib
-	    if test ! -f "$with_parmetis/$include_path/parmetis.h" ; then
-		with_parmetis=/usr/local/
-		if test ! -f "$with_metis/$include_path/parmetis.h" ; then
-		    with_parmetis="no"
-		    AC_MSG_RESULT(failed)
-		else
-		    AC_MSG_RESULT(yes)
-		fi
-	    else
-		AC_MSG_RESULT(yes)
-	    fi
-	fi
-	])
-  
-
-  # store old values
-  ac_save_LDFLAGS="$LDFLAGS"
-  ac_save_CPPFLAGS="$CPPFLAGS"
-  ac_save_LIBS="$LIBS"
-  
-  ## do nothing if --without-parmetis is used
-  if test x"$MPI_LIBS" != x"" && test x"$with_parmetis" != x"no" ; then
-          
-      # defaultpath
-      PARMETIS_LIB_PATH="$with_parmetis$lib_path"
-      PARMETIS_INCLUDE_PATH="$with_parmetis$lib_path"
-                  
-      PARMETIS_LIBS="-L$PARMETIS_LIB_PATH $MPI_LIBS"
-      PARMETIS_LDFLAGS="$MPI_LDFLAGS"
-
-      # set variables so that tests can use them
-      CPPFLAGS="$CPPFLAGS -I$PARMETIS_INCLUDE_PATH $MPI_CPPFLAGS"
-
-      # check for central header
-      AC_CHECK_HEADER([parmetis.h],[
-	      PARMETIS_CPPFLAGS="-I$PARMETIS_INCLUDE_PATH"
-	      HAVE_PARMETIS="1"],[
-	      HAVE_PARMETIS="0"
-	      AC_MSG_WARN([parmetis.h not found in $PARMETIS_INCLUDE_PATH with $CPPFLAGS])]
-      )
-
-      PARMETIS_CPPFLAGS="${MPI_CPPFLAGS} ${PARMETIS_CPPFLAGS} -DENABLE_PARMETIS=1"
-
-#      AC_LANG_PUSH([C++])
-      
-      # if header is found check for the libs
-
-      LIBS="$LIBS $PARMETIS_LIBS -lm"
-      LDFLAGS="$LDFLAGS $PARMETIS_LDFLAGS"
-      
-      if test x$HAVE_PARMETIS = x1 ; then
-	  AC_CHECK_LIB(metis, [metis_partgraphkway],[
-		  PARMETIS_LIBS="$PARMETIS_LIBS -lmetis"
-		  LIBS="$LIBS -lmetis"],[
-		  HAVE_PARMETIS="0"
-		  AC_MSG_WARN(libmetis not found!)])
-      fi
-
-      if test x$HAVE_PARMETIS = x1 ; then
-	  AC_CHECK_LIB(parmetis, [parmetis_v3_partkway],[
-		  PARMETIS_LIBS="$PARMETIS_LIBS -lparmetis -lmetis"
-		  HAVE_PARMETIS="1"],[
-		  HAVE_PARMETIS="0"
-		  AC_MSG_WARN(libparmetis not found!)])
-      fi
-
-#      AC_LANG_POP([C++])
-      
-      # pre-set variable for summary
-      #with_parmetis="no"
-      
-      # did it work?
-      AC_MSG_CHECKING(ParMETIS in $with_parmetis)
-      if test x$HAVE_PARMETIS = x1 ; then
-	  AC_SUBST(PARMETIS_LDFLAGS, $PARMETIS_LDFLAGS)
-	  AC_SUBST(PARMETIS_LIBS, $PARMETIS_LIBS)
-	  AC_SUBST(PARMETIS_CPPFLAGS, $PARMETIS_CPPFLAGS)
-	  AC_DEFINE(HAVE_PARMETIS,ENABLE_PARMETIS,[Define if you have the Parmetis library.
-		  This is only true if MPI was found by configure 
-		  _and_ if the application uses the PARMETIS_CPPFLAGS])
-	  AC_MSG_RESULT(ok)
-	  
-    # add to global list
-	  DUNE_PKG_LDFLAGS="$DUNE_PKG_LDFLAGS $PARMETIS_LDFLAGS"
-	  DUNE_PKG_LIBS="$DUNE_PKG_LIBS $PARMETIS_LIBS"
-	  DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $PARMETIS_CPPFLAGS"
-	  
-    # re-set variable correctly
-	  with_parmetis="yes"
-      else
-	  with_parmetis="no"
-	  AC_MSG_RESULT(failed)
-      fi 
-      
-  # end of "no --without-parmetis"
-  else
-  	with_parmetis="no"
-  fi
- 
-  # tell automake	
-  AM_CONDITIONAL(PARMETIS, test x$HAVE_PARMETIS = x1)
-  
-  # restore variables
-  LDFLAGS="$ac_save_LDFLAGS"
-  CPPFLAGS="$ac_save_CPPFLAGS"
-  LIBS="$ac_save_LIBS"
-  
-  DUNE_ADD_SUMMARY_ENTRY([ParMETIS],[$with_parmetis])
-
-])
-
-dnl Local Variables:
-dnl mode: shell-script
-dnl End:
diff --git a/m4/static_assert.m4 b/m4/static_assert.m4
deleted file mode 100644
index 1c2af65f0..000000000
--- a/m4/static_assert.m4
+++ /dev/null
@@ -1,57 +0,0 @@
-AC_DEFUN([GXX0X],[
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_ARG_ENABLE(gxx0xcheck,
-		AC_HELP_STRING([--disable-gxx0xcheck],
-                 [try to enable c++0x feature for g++ [[default=yes]]]),
-				 [gxx0xcheck=$enableval],
-				 [gxx0xcheck=yes])
-  if test "x$GXX" = xyes && test "x$gxx0xcheck" = xyes; then
-    AC_LANG_PUSH([C++])
-    AC_MSG_CHECKING([whether g++ accepts -std=c++0x])
-    ac_save_CXX="$CXX"
-    CXX="$CXX -std=c++0x"
-    HAVE_CXX0X=no
-    AC_TRY_COMPILE([],[],[HAVE_CXX0X=yes],[])
-    if test "x$HAVE_CXX0X" == "xyes" ; then
-      CXXCPP="$CXXCPP -std=c++0x"
-    else
-      CXX="$ac_save_CXX"
-    fi
-    AC_MSG_RESULT([$HAVE_CXX0X])
-    AC_LANG_POP
-  fi
-])
-
-AC_DEFUN([STATIC_ASSERT_CHECK],[
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([GXX0X])
-  AC_LANG_PUSH([C++])
-  AC_MSG_CHECKING([whether static_assert is supported])
-  AC_TRY_COMPILE([],[static_assert(true,"MSG")], [
-    HAVE_STATIC_ASSERT=yes
-    AC_MSG_RESULT(yes)], [
-    HAVE_STATIC_ASSERT=no
-    AC_MSG_RESULT(no)])
-  if test "x$HAVE_STATIC_ASSERT" = xyes; then
-    AC_DEFINE(HAVE_STATIC_ASSERT, 1, [Define to 1 if static_assert is supported])
-  fi
-  AC_LANG_POP
-])
-
-AC_DEFUN([NULLPTR_CHECK],[
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([GXX0X])
-  AC_LANG_PUSH([C++])
-  AC_MSG_CHECKING([whether nullptr is supported])
-  AC_TRY_COMPILE([],[typedef nullptr_t peng;
-    char* ch = nullptr;
-    ], [
-    HAVE_NULLPTR=yes
-    AC_MSG_RESULT(yes)], [
-    HAVE_NULLPTR=no
-    AC_MSG_RESULT(no)])
-  if test "x$HAVE_NULLPTR" = xyes; then
-    AC_DEFINE(HAVE_NULLPTR, 1, [Define to 1 if nullptr is supported])
-  fi
-  AC_LANG_POP
-])
diff --git a/m4/superlu-dist.m4 b/m4/superlu-dist.m4
deleted file mode 100644
index fba4d0c79..000000000
--- a/m4/superlu-dist.m4
+++ /dev/null
@@ -1,205 +0,0 @@
-#! /bin/bash
-# $Id$
-# searches for Superlu_Dist headers and libs
-AC_DEFUN([_slu_dist_lib_path],
-    [
-	my_include_path=include/superludist
-	my_lib_path=lib
-	my_slu_found=yes
-	if test ! -f "$1/$my_include_path/$2" ; then
-	    #Try to find headers under superlu
-	    my_include_path=include
-	    if test ! -f "$with_superlu/$my_include_path/$2" ; then
-		my_include_path=SRC
-		my_lib_path=""
-		if test ! -f "$with_superlu/$my_include_path/$2"; then
-		    my_slu_found=no
-		fi
-	    fi
-	fi
-    ]
-)
-
-#AC_DEFUN([_slu_dist_search_versions],
-#    [
-#	my_slu_header=slu_ddefs.h
-#	_slu_dist_lib_path($1, "$my_slu_header")
-#	if test "$my_slu_found" != "yes"; then 
-#	    my_slu_header="dsp_defs.h"
-#	    _slu_dist_lib_path($1, "$my_slu_header")
-#	fi
-#    ]
-#)
-
-AC_DEFUN([_slu_dist_search_default],
-    [
-	with_superlu_dist=/usr
-	_slu_dist_lib_path($with_superlu_dist, "superlu_ddefs.h")
-	
-	if test "$my_slu_found" = "no"; then
-	    with_superlu_dist=/usr/local
-	    _slu_dist_lib_path($with_superlu_dist, "superlu_ddefs.h")
-	fi
-    ]
-)
-
-AC_DEFUN([DUNE_PATH_SUPERLU_DIST],[
-	AC_MSG_CHECKING(for SuperLUDist library)
-	AC_REQUIRE([AC_PROG_CC])
-	AC_REQUIRE([ACX_BLAS])
-	AC_REQUIRE([DUNE_MPI])
-
-  #
-  # USer hints ...
-  #
-	my_lib_path=""
-	my_include_path=""
-	AC_ARG_WITH([superlu_dist],
-	    [AC_HELP_STRING([--with-superlu-dist],[user defined path to SuperLUDist library])],
-	    [dnl
-		if test "$withval" != no ; then
-		    # get absolute path
-		    with_superlu_dist=`eval cd $withval 2>&1 && pwd`
-		    if test "$withval" = yes; then
-		        # Search in default locations
-			_slu_dist_search_default
-		    else
-		        # Search for the headers in the specified location
-			_slu_dist_lib_path("$with_superlu_dist", "superlu_ddefs.h")
-		    fi
-		fi
-		],
-	    [dnl
-		# Search in default locations
-		    _slu_dist_search_default
-		])
-	
-	AC_ARG_WITH([super_lu_dist_lib],
-	    [AC_HELP_STRING([--with-superlu-dist-lib],[The name of the static SuperLUDist library to link to. By default the shared library with the name superlu-mpi is tried])],
-	    [
-		if test "$withval" != no ; then
-		    with_superlu_dist_lib=$withval
-		fi
-	    ]
-	)
-
-  # store old values
-	ac_save_LDFLAGS="$LDFLAGS"
-	ac_save_CPPFLAGS="$CPPFLAGS"
-	ac_save_LIBS="$LIBS"
-	
-  ## do nothing if --without-superlu_dist is used
-	if test x"$with_superlu_dist" != x"no" ; then
-	    
-      # defaultpath
-	    SUPERLU_DIST_LIB_PATH="$with_superlu_dist/$my_lib_path"
-	    SUPERLU_DIST_INCLUDE_PATH="$with_superlu_dist/$my_include_path"
-	    
-	    SUPERLU_DIST_LDFLAGS="$MPI_LDFLAGS"
-	    SUPERLU_DIST_LIBS="-L$SUPERLU_DIST_LIB_PATH $MPI_LIBS"
-	    
-      # set variables so that tests can use them
-	    CPPFLAGS="$CPPFLAGS -I$SUPERLU_DIST_INCLUDE_PATH $MPI_CPPFLAGS"
-	    
-      # check for central header
-	    AC_CHECK_HEADER([superlu_ddefs.h],[
-		    SUPERLU_DIST_CPPFLAGS="$CPPFLAGS"
-		    HAVE_SUPERLU_DIST="1"],[
-		    HAVE_SUPERLU_DIST="0"
-		    AC_MSG_WARN([superlu_ddefs.h not found in $SUPERLU_DIST_INCLUDE_PATH with $CPPFLAGS])]
-	    )
-
-	    SUPERLU_DIST_CPPFLAGS="-I$SUPERLU_DIST_INCLUDE_PATH $MPI_CPPFLAGS"
-	    
-      # if header is found check for the libs
-	    	    
-	    if test x$HAVE_SUPERLU_DIST = x1 ; then
-
-		# set variables so that tests can use them
-		OLDFLAGS="$LDFLAGS"
-		LDFLAGS="$LDFLAGS $MPI_LDFLAGS"
-		LIBS="$BLAS_LIBS $LIBS $FLIBS $MPILIBS -L$SUPERLU_DIST_LIB_PATH"
-
-		AC_CHECK_LIB(superlu-mpi, [pdgssvx],
-		    [dnl
-			SUPERLU_DIST_LIBS="$LIBS -lsuperlu-mpi"
-			SUPERLU_DIST_LDFLAGS="$LDFLAGS"
-			HAVE_SUPERLU_DIST="1"
-			AC_MSG_RESULT(yes)
-			],[dnl
-			HAVE_SUPERLU_DIST="0"
-			AC_MSG_WARN(libsuperlu-mpi not found)])
-
-		if test "$HAVE_SUPERLU_DIST" = 0; then
-		    #check for the static library
-		    if test x$with_superlu_dist_lib = x ; then
-			with_superlu_dist_lib=superlu_mpi.a
-		    fi
-		    AC_MSG_CHECKING([static SuperLUDist library $with_superlu_dist_lib in "$SUPERLU_DIST_LIB_PATH"])
-		    
-		    if test -f "$SUPERLU_DIST_LIB_PATH/$with_superlu_dist_lib"; then
-			LIBS="$SUPERLU_DIST_LIB_PATH/$with_superlu_dist_lib $LIBS"
-			LDFLAGS="$OLDFLAGS"
-			AC_CHECK_FUNC(pdgssvx,
-			    [
-				SUPERLU_DIST_LIBS="$LIBS"
-				SUPERLU_DIST_LDFLAGS="$LDFLAGS"
-				HAVE_SUPERLU_DIST="1"
-				AC_MSG_RESULT(yes)
-				],
-			    [ 
-				HAVE_SUPERLU_DIST="0"
-				AC_MSG_RESULT(failed)
-			    ]
-			)
-		    else
-			AC_MSG_RESULT(failed)
-			HAVE_SUPERLU_DIST="0"
-		    fi
-		fi
-	    fi
-      # pre-set variable for summary
-      #with_superlu_dist="no"
-	    
-      # did it work?
-	    AC_MSG_CHECKING([SuperLUDist in $with_superlu_dist])
-	    if test x$HAVE_SUPERLU_DIST = x1 ; then
-		AC_SUBST(SUPERLU_DIST_LDFLAGS, $SUPERLU_DIST_LDFLAGS)
-		AC_SUBST(SUPERLU_DIST_LIBS, $SUPERLU_DIST_LIBS)
-		AC_SUBST(SUPERLU_DIST_CPPFLAGS, $SUPERLU_DIST_CPPFLAGS)
-		AC_DEFINE(HAVE_SUPERLU_DIST, 1, [Define to 1 if SUPERLU_DIST is found])
-		AC_MSG_RESULT(ok)
-		
-    # add to global list
-		DUNE_PKG_LDFLAGS="$DUNE_PKG_LDFLAGS $SUPERLU_DIST_LDFLAGS"
-		DUNE_PKG_LIBS="$DUNE_PKG_LIBS $SUPERLU_DIST_LIBS"
-		DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $SUPERLU_DIST_CPPFLAGS"
-		
-    # re-set variable correctly
-		with_superlu_dist="yes"
-	    else
-		with_superlu_dist="no"
-		AC_MSG_RESULT(failed)
-	    fi 
-	    
-  # end of "no --without-superlu_dist"
-	else
-	    with_superlu_dist="no"
-	fi
-	
-  # tell automake	
-	AM_CONDITIONAL(SUPERLU_DIST, test x$HAVE_SUPERLU_DIST = x1)
-	
-  # restore variables
-	LDFLAGS="$ac_save_LDFLAGS"
-	CPPFLAGS="$ac_save_CPPFLAGS"
-	LIBS="$ac_save_LIBS"
-	
-    DUNE_ADD_SUMMARY_ENTRY([SuperLU-DIST],[$with_superlu_dist])	
-
-    ]
-)
-
-dnl Local Variables:
-dnl mode: shell-script
-dnl End:
diff --git a/m4/superlu.m4 b/m4/superlu.m4
deleted file mode 100644
index b5e154d61..000000000
--- a/m4/superlu.m4
+++ /dev/null
@@ -1,198 +0,0 @@
-#! /bin/bash
-# $Id$
-# searches for SuperLU headers and libs
-
-AC_DEFUN([_slu_lib_path],
-    [
-	my_include_path=include/superlu
-	my_lib_path=lib
-	my_slu_found=yes
-	if test ! -f "$1/$my_include_path/$2" ; then
-	    #Try to find headers under superlu
-	    my_include_path=include
-	    if test ! -f "$with_superlu/$my_include_path/$2" ; then
-		my_include_path=SRC
-		my_lib_path=""
-		if test ! -f "$with_superlu/$my_include_path/$2"; then
-		    my_slu_found=no
-		fi
-	    fi
-	fi
-    ]
-)
-
-AC_DEFUN([_slu_search_versions],
-    [
-	my_slu_header=slu_ddefs.h
-	_slu_lib_path($1, "$my_slu_header")
-	if test "$my_slu_found" != "yes"; then 
-	    my_slu_header="dsp_defs.h"
-	    _slu_lib_path($1, "$my_slu_header")
-	fi
-    ]
-)
-
-AC_DEFUN([_slu_search_default],
-    [
-	with_superlu=/usr
-	_slu_search_versions($with_superlu)
-	
-	if test "$my_slu_found" = "no"; then
-	    with_superlu=/usr/local
-	    _slu_search_versions($with_superlu)
-	fi
-    ]
-)
-
-AC_DEFUN([DUNE_PATH_SUPERLU],[
-	AC_REQUIRE([AC_PROG_CC])
-	#AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
-	AC_REQUIRE([ACX_BLAS])
-
-  #
-  # User hints ...
-  #
-	my_lib_path=""
-	my_include_path=""
-	AC_ARG_WITH([superlu],
-	    [AC_HELP_STRING([--with-superlu],[user defined path to SuperLU library])],
-	    [dnl
-		if  test "$withval" != no ; then
-		    # get absolute path
-		    with_superlu=`eval cd $withval 2>&1 && pwd`
-		    if test "$withval" = yes; then
-		        # Search in default locations
-			_slu_search_default
-		    else
-		        # Search for the headers in the specified location
-			with_superlu="$withval"
-			_slu_search_versions("$with_superlu")
-		    fi
-		fi
-		],
-	    [dnl
-		# Search in default locations
-		    _slu_search_default
-		])
-  
-	AC_ARG_WITH([super_lu_lib],
-	    [AC_HELP_STRING([--with-superlu-lib],[The name of the static SuperLU library to link to. By default the shared library with the name superlu-mpi is tried])],
-	    [
-		if test "$withval" != no ; then
-		    with_superlu_lib=$withval
-		fi
-	    ]
-	)
-  # store old values
-	ac_save_LDFLAGS="$LDFLAGS"
-	ac_save_CPPFLAGS="$CPPFLAGS"
-	ac_save_LIBS="$LIBS"
-	
-  ## do nothing if --without-superlu is used
-	if test x"$with_superlu" != x"no" ; then
-      # defaultpath
-	    SUPERLU_LIB_PATH="$with_superlu/$my_lib_path"
-	    SUPERLU_INCLUDE_PATH="$with_superlu/$my_include_path"
-	    
-	    
-      # set variables so that tests can use them
-	    CPPFLAGS="$CPPFLAGS -I$SUPERLU_INCLUDE_PATH"
-	    
-      # check for central header
-	    AC_CHECK_HEADER([$my_slu_header],[
-		    SUPERLU_CPPFLAGS="$CPPFLAGS"
-		    HAVE_SUPERLU="1"],[
-		    HAVE_SUPERLU="0"
-		    AC_MSG_WARN([$my_slu_header not found in $SUPERLU_INCLUDE_PATH with $CPPFLAGS])]
-	    )
-	    
-      # if header is found check for the libs
-	    
-	    if test x$HAVE_SUPERLU = x1 ; then
-		# if no blas was found, we assume that superlu was compiled with 
-		# internal blas
-		if test "x$BLAS_LIBS" = "x"; then
-		  LIBS="$BLAS_LIBS $LIBS $FLIBS"
-		else
-		  LIBS="-lblas $LIBS $FLIBS"
-		fi
-		HAVE_SUPERLU=0
-
-		if test x$with_superlu_lib = x; then
-		    AC_CHECK_LIB(superlu, [dgssvx],[
-			    SUPERLU_LIBS="$SUPERLU_LIBS -lsuperlu $LIBS"
-			    HAVE_SUPERLU="1"
-			    ],[
-			    HAVE_SUPERLU="0"
-			    AC_MSG_WARN(libsuperlu not found)])
-		fi
-		if test "$HAVE_SUPERLU" = 0; then
-		    if test x$with_superlu_lib = x ; then
-			with_superlu_lib=superlu.a
-		    fi
-		    AC_MSG_CHECKING([static superlu library "$with_superlu_lib" in "$SUPERLU_LIB_PATH"])
-		    if test -f "$SUPERLU_LIB_PATH/$with_superlu_lib" ; then
-			LIBS="$SUPERLU_LIB_PATH/$with_superlu_lib $LIBS"
-			AC_CHECK_FUNC(dgssvx,
-			    [
-				SUPERLU_LIBS="$LIBS"
-				HAVE_SUPERLU="1"
-				AC_MSG_RESULT(yes)
-			    ],
-			    [
-				HAVE_SUPERLU="0"
-				AC_MSG_RESULT(failed)
-			    ]
-			)
-		    else
-			HAVE_SUPERLU="0"
-			AC_MSG_RESULT(failed)
-		    fi
-		fi
-	    fi
-      # pre-set variable for summary
-      #with_superlu="no"
-      
-      # did it work?
-	    AC_MSG_CHECKING([SuperLU in $with_superlu])
-	    if test x$HAVE_SUPERLU = x1 ; then
-		AC_SUBST(SUPERLU_LIBS, $SUPERLU_LIBS)
-		AC_SUBST(SUPERLU_CPPFLAGS, $SUPERLU_CPPFLAGS)
-		AC_DEFINE(HAVE_SUPERLU, 1, [Define to 1 if SUPERLU is found])
-		if test "$my_slu_header" = "slu_ddefs.h"; then
-		    AC_DEFINE(SUPERLU_POST_2005_VERSION, 1, [define to 1 if there is  a header slu_ddefs.h in SuperLU])
-		fi
-		AC_MSG_RESULT(ok)
-		
-    # add to global list
-		DUNE_PKG_LIBS="$DUNE_PKG_LIBS $SUPERLU_LIBS"
-		DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $SUPERLU_CPPFLAGS"
-		
-    # re-set variable correctly
-		with_superlu="yes"
-	    else
-		with_superlu="no"
-		AC_MSG_RESULT(failed)
-	    fi 
-	    
-  # end of "no --without-superlu"
-	else
-	    with_superlu="no"
-	fi
-	
-  # tell automake	
-	AM_CONDITIONAL(SUPERLU, test x$HAVE_SUPERLU = x1)
-	
-  # restore variables
-	LDFLAGS="$ac_save_LDFLAGS"
-	CPPFLAGS="$ac_save_CPPFLAGS"
-	LIBS="$ac_save_LIBS"
-	
-    DUNE_ADD_SUMMARY_ENTRY([SuperLU],[$with_superlu])
-
-    ]
-)
-    
-dnl Local Variables:
-dnl mode: shell-script
-dnl End:
diff --git a/m4/update_from_autoconf_archive b/m4/update_from_autoconf_archive
deleted file mode 100755
index 2a1a92db5..000000000
--- a/m4/update_from_autoconf_archive
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# where is the autoconf-archive installed?
-ARCHDIR=/usr/share/autoconf-archive/
-# if anyone wants this as an option, tell me (Thimo)
-
-for NAME in *.m4 ; do
-  # newer version installed?
-  if test $ARCHDIR/$NAME -nt $NAME ; then
-    echo Updating $NAME
-    cp $ARCHDIR/$NAME $NAME
-  fi
-done
diff --git a/m4/xdr.m4 b/m4/xdr.m4
deleted file mode 100644
index 666e183c0..000000000
--- a/m4/xdr.m4
+++ /dev/null
@@ -1,8 +0,0 @@
-# $Id$
-# searches for XDR Headers which are implicitly included by rpc.h
-# some systems don't like it when xdr.h is directly included
-
-AC_DEFUN([DUNE_PATH_XDR],[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_CHECK_HEADERS(rpc/rpc.h)
-])
-- 
GitLab