diff --git a/CMakeLists.txt b/CMakeLists.txt
index 716b86175f651cd5f4a1cf7d8c0d696a49c9d9ff..d50c72fb5c943bcd726e1f94f34487874be6ce8d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,18 +31,17 @@ include(GridType)
 
 # start a dune project with information from dune.module
 dune_project()
-set(SUBDIRS
-  dune
-  lib
-  m4
-  utils)
 
-foreach(i ${SUBDIRS})
-  add_subdirectory(${i})
-endforeach(i ${SUBDIRS})
+add_subdirectory(cmake/modules)
+add_subdirectory(m4)
+
+add_subdirectory(doc/doxygen)
+
+add_subdirectory(dune)
+add_subdirectory(lib)
 
 add_subdirectory(examples EXCLUDE_FROM_ALL)
-add_subdirectory(cmake/modules)
+add_subdirectory(utils)
 
 # finalize the dune project, e.g., generate config.h etc.
 finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
diff --git a/doc/doxygen/CMakeLists.txt b/doc/doxygen/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f7b8ea5c993424d9524394428ec8f2ca9160b66a
--- /dev/null
+++ b/doc/doxygen/CMakeLists.txt
@@ -0,0 +1,2 @@
+# shortcut for creating the Doxyfile.in and Doxyfile
+add_doxygen_target()
diff --git a/doc/doxygen/Doxylocal b/doc/doxygen/Doxylocal
new file mode 100644
index 0000000000000000000000000000000000000000..2e61fe09bf72b2d52e4d762bfd6b491df31935a5
--- /dev/null
+++ b/doc/doxygen/Doxylocal
@@ -0,0 +1,5 @@
+INPUT                 += @srcdir@/mainpage.txt \
+                         @top_srcdir@/dune/alugrid
+
+EXCLUDE               += @top_srcdir@/dune/alugrid/impl \
+                         @top_srcdir@/dune/alugrid/test
diff --git a/doc/doxygen/mainpage.txt b/doc/doxygen/mainpage.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab751ad299974269eca06d1b4984c92e80ac5dfd
--- /dev/null
+++ b/doc/doxygen/mainpage.txt
@@ -0,0 +1,5 @@
+/** \mainpage dune-alugrid Automatic Documentation
+
+\section into Introduction
+
+*/