diff --git a/dumux/common/pardiso.hh b/dumux/common/pardiso.hh
index 0ecc6f3aa67a14df964566dfadd157a08155d7f8..ae8cd7ae05f524d39251583a7d7f5570899ed1e6 100644
--- a/dumux/common/pardiso.hh
+++ b/dumux/common/pardiso.hh
@@ -43,14 +43,6 @@
 
 
 /* PARDISO prototype. */
-//DW extern "C" int F77_FUN(pardisoinit)
-//DW     (void *, int *, int *);
-
-//DW extern "C" int F77_FUN(pardiso)
-//DW     (void *, int *, int *, int *, int *, int *,
-//DW      double *, int *, int *, int *, int *, int *,
-//DW      int *, double *, double *, int *);
-
 
 extern "C" int F77_FUN(pardisoinit)
     (void *pt, int *mtype, int *solver, int *iparm, double *dparm, int *error);
@@ -60,7 +52,7 @@ extern "C" int F77_FUN(pardiso)
      double *a, int *ia, int *ja, int *perm, int *nrhs, int *iparm,
      int *msglvl, double *b, double *x, int *error, double *dparm);
 
-#endif
+#endif /* HAVE_PARDISO */
 
 namespace Dune {
 
@@ -104,8 +96,7 @@ public:
         msglvl_ = 0;
         error_ = 0;
 
-// DW solver_ = 0, choose sparse direct solver, = 1 multi-recursive iterative solver
-        solver_ = 0;
+        solver_ = 0; // solver_ = 0, choose sparse direct solver, = 1 multi-recursive iterative solver
      
 
         //F77_FUN(pardisoinit) (pt_, &mtype_, iparm_);
@@ -176,21 +167,33 @@ public:
           std::cout << a_[i] << std::endl;
         */
 
-//DW old        F77_FUN(pardisoinit) (pt_, &mtype_, iparm_);
         F77_FUN(pardisoinit) (pt_,  &mtype_, &solver_, iparm_, dparm_, &error_);
-        if (error_ != 0)
-            DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. Error code " << error_);
+
+        if (error_)
+	{
+		switch(error_)
+		{
+		    case -10:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. No license file found. Error code " << error_);
+			break;
+		    case -11:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. License has expired. Error code " << error_);
+			break;
+		    case -12:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. Wrong username or hostname. Error code " << error_);
+			break;
+		    default:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. Error code " << error_);
+			break;
+		}
+	}
+		
 
         phase_ = 11;
         int idum;
         double ddum;
         iparm_[2]  = num_procs_;
 
-//DW old        F77_FUN(pardiso) (pt_, &maxfct_, &mnum_, &mtype_, &phase_,
-//DW                           &n_, a_, ia_, ja_, &idum, &nrhs_,
-//DW                           iparm_, &msglvl_, &ddum, &ddum, &error_);
-
-//DW new differs by adding of dparm_ 
         F77_FUN(pardiso) (pt_, &maxfct_, &mnum_, &mtype_, &phase_,
                          &n_, a_, ia_, ja_, &idum, &nrhs_,
                          iparm_, &msglvl_, &ddum, &ddum, &error_, dparm_);
@@ -203,10 +206,6 @@ public:
 
         phase_ = 22;
 
-//DW old        F77_FUN(pardiso) (pt_, &maxfct_, &mnum_, &mtype_, &phase_,
-//DW                           &n_, a_, ia_, ja_, &idum, &nrhs_,
-//DW                           iparm_, &msglvl_, &ddum, &ddum, &error_);
-
         F77_FUN(pardiso) (pt_, &maxfct_, &mnum_, &mtype_, &phase_,
                          &n_, a_, ia_, ja_, idum, &nrhs_,
                          iparm_, &msglvl_, &ddum, &ddum, &error_, dparm_);
@@ -230,8 +229,7 @@ public:
         mnum_ = 1;
         msglvl_ = 0;
         error_ = 0;
-// DW solver_ = 0, choose sparse direct solver, = 1 multi-recursive iterative solver
-        solver_ = 0;
+        solver_ = 0; // solver_ = 0, choose sparse direct solver, = 1 multi-recursive iterative solver
 
         RowIterator i0 = A.begin();
         ColIterator j0 = (*i0).begin();
@@ -294,9 +292,27 @@ public:
           std::cout << a_[i] << std::endl;
         */
 
-//DW old        F77_FUN(pardisoinit) (pt_, &mtype_, iparm_);
         F77_FUN(pardisoinit) (pt_,  &mtype_, &solver_, iparm_, dparm_, &error_);
 
+        if (error_)
+	{
+		switch(error_)
+		{
+		    case -10:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. No license file found. Error code " << error_);
+			break;
+		    case -11:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. License has expired. Error code " << error_);
+			break;
+		    case -12:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. Wrong username or hostname. Error code " << error_);
+			break;
+		    default:
+			DUNE_THROW(Dune::MathError, "Constructor SeqPardiso: pardisoinit failed. Error code " << error_);
+			break;
+		}
+	}
+
         phase_ = 11;
         int idum;
         double ddum;
@@ -477,10 +493,9 @@ private:
     int systemsize_;
     int phase_;
     bool verbose_;
-//DW new parameters 
     double dparm_[64];
     int solver_;
-//    int perm_[64]; 
+//    int perm_[64];  // not yet used here
 };
 
 }