diff --git a/common/interfaces.hh b/common/interfaces.hh
new file mode 100644
index 0000000000000000000000000000000000000000..cc2870cc5cec610f6e44f6b0d5ae1a96176011e7
--- /dev/null
+++ b/common/interfaces.hh
@@ -0,0 +1,30 @@
+// -*- 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
+
+/** @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()
+    {}
+
+  };
+
+} // end namespace Dune
+#endif