diff --git a/patches/README b/patches/README
new file mode 100644
index 0000000000000000000000000000000000000000..2b7ac5c9984c185e19bc202bc0abc7980624407b
--- /dev/null
+++ b/patches/README
@@ -0,0 +1,14 @@
+On purpose of this patch directory
+----------------------------------
+DuMuX is based on a certain release of DUNE 
+and some of its components or models can make use of 
+external libraries and modules.
+
+Sometimes software like a compiler or a standard library
+changes, so it can be useful to adapt these releases in a certain way
+that components will seamless work together.
+It can also be necessary to fix serious bugs in them, but it makes
+not always sense to use a developer version or a more recent release if available.
+
+For fixing such things this directory is made. Files created here contain patches 
+against some DUNE release or some other component. Their application should be documented here too.
diff --git a/patches/README.patches b/patches/README.patches
new file mode 100644
index 0000000000000000000000000000000000000000..edd01d4f45bd9c8248351818da53bc189bcc8365
--- /dev/null
+++ b/patches/README.patches
@@ -0,0 +1,24 @@
+--------------------------------------
+|Compilation problem with 'dune-istl'|
+--------------------------------------
+
+If you use DUNE 2.0 stable release use
+
+    dune-istl-2.0.patch
+
+For completeness we contain also a patch against a trunk version of dune-istl
+which an average DUMUX developer will not need, it could be useful in further releases.
+But hopefully it will be obsoleted.
+
+    dune-istl-dune-trunk-r6271.patch
+
+Application: 
+
+  cd $PATH_TO_DUNE_ISTL_2.0
+  patch -p1 < $PATH_TO_THIS_PATCHES_FOLDER/dune-istl-2.0.patch
+
+  cd $PATH_TO_DUNE_ISTL_TRUNK
+  patch -p1 < $PATH_TO_THE_DOWNLOADS_FOLDER/dune-istl-dune-trunk-r6271.patch
+
+The checkout-dumux script applies dune-istl-2.0.patch automatically, if patch application is not switched off.
+
diff --git a/patches/dune-istl-2.0.patch b/patches/dune-istl-2.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..199a662d8d1d6c7e2901b9b648cb891163b155e8
--- /dev/null
+++ b/patches/dune-istl-2.0.patch
@@ -0,0 +1,26 @@
+--- dune-istl-2.0/dune/istl/remoteindices.hh.orig	2010-11-26 16:18:39.703876061 +0100
++++ dune-istl-2.0/dune/istl/remoteindices.hh	2010-11-26 16:20:53.242998985 +0100
+@@ -1412,20 +1412,14 @@
+   }
+   
+   template<typename T, typename A>
+-  inline typename std::map<int, std::pair<SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*,
+-					  SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*> >::const_iterator
++  inline typename RemoteIndices<T,A>::const_iterator
+   RemoteIndices<T,A>::begin() const
+   {
+     return remoteIndices_.begin();
+   }
+-  
++
+   template<typename T, typename A>
+-  inline typename std::map<int, std::pair<SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*,
+-					  SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*> >::const_iterator
++  inline typename RemoteIndices<T,A>::const_iterator
+   RemoteIndices<T,A>::end() const
+   {
+     return remoteIndices_.end();
diff --git a/patches/dune-istl-dune-trunk-r6271.patch b/patches/dune-istl-dune-trunk-r6271.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8d21b02d6d446f91e2dddf8c8967e59e54eccc73
--- /dev/null
+++ b/patches/dune-istl-dune-trunk-r6271.patch
@@ -0,0 +1,38 @@
+diff --git a/dune/common/parallel/remoteindices.hh b/dune/common/parallel/remoteindices.hh
+index bfb6d43..bb7b0cf 100644
+--- a/dune/common/parallel/remoteindices.hh
++++ b/dune/common/parallel/remoteindices.hh
+@@ -1508,30 +1508,21 @@ namespace Dune{
+   }
+ 
+   template<typename T, typename A>
+-  inline typename std::map<int, std::pair<SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*,
+-					  SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*> >::const_iterator
++  inline typename RemoteIndices<T,A>::const_iterator
+   RemoteIndices<T,A>::find(int proc) const
+   {
+     return remoteIndices_.find(proc);
+   }
+ 
+   template<typename T, typename A>
+-  inline typename std::map<int, std::pair<SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*,
+-					  SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*> >::const_iterator
++  inline typename RemoteIndices<T,A>::const_iterator
+   RemoteIndices<T,A>::begin() const
+   {
+     return remoteIndices_.begin();
+   }
+   
+   template<typename T, typename A>
+-  inline typename std::map<int, std::pair<SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*,
+-					  SLList<typename RemoteIndices<T,A>::RemoteIndex,
+-						 typename RemoteIndices<T,A>::Allocator >*> >::const_iterator
++  inline typename RemoteIndices<T,A>::const_iterator
+   RemoteIndices<T,A>::end() const
+   {
+     return remoteIndices_.end();