diff --git a/mex/sources/k_order_perturbation/dynamic_dll.hh b/mex/sources/k_order_perturbation/dynamic_dll.hh
index 147f92104803dc2e3f25622c87e5cc223f6eec14..10b6615ae9ec4f43f7e2e76261ece8eca8fe54f0 100644
--- a/mex/sources/k_order_perturbation/dynamic_dll.hh
+++ b/mex/sources/k_order_perturbation/dynamic_dll.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -17,18 +17,8 @@
  * along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-// The following ifdef block is the standard way of creating macros which make exporting
-// from a DLL simpler. All files within this DLL are compiled with the K_ORDER_PERTURBATION_EXPORTS
-// symbol defined on the command line. this symbol should not be defined on any project
-// that uses this DLL. This way any other project whose source files include this file see
-// K_ORDER_PERTURBATION_API functions as being imported from a DLL, wheras this DLL sees symbols
-// defined with this macro as being exported.
-
 #if defined(_WIN32) || defined(__CYGWIN32__)
 # include <windows.h>
-# ifdef _MSC_VER
-#  define K_ORDER_PERTURBATION_API __declspec(dllexport)
-# endif
 #else
 # include <dlfcn.h> // unix/linux DLL (.so) handling routines
 #endif
diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.cc b/mex/sources/k_order_perturbation/k_ord_dynare.cc
index 2622a7de177a8cf2fadb819e0fd2b7c9543e8750..9735e5918ca8a0bb1f1a3e189226d197ba9b1c5e 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.cc
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.cc
@@ -34,10 +34,10 @@
 /**************************************************************************************/
 
 KordpDynare::KordpDynare(const char **endo,  int num_endo,
-                         const char **exo, int nexog, int npar, //const char** par,
+                         const char **exo, int nexog, int npar,
                          Vector *ysteady, TwoDMatrix *vcov, Vector *inParams, int nstat,
                          int npred, int nforw, int nboth, const int jcols, const Vector *nnzd,
-                         const int nsteps, int norder, //const char* modName,
+                         const int nsteps, int norder,
                          Journal &jr, DynamicModelDLL &dynamicDLL, double sstol,
                          const vector<int> *var_order, const TwoDMatrix *llincidence, double criterium) throw (TLException) :
   nStat(nstat), nBoth(nboth), nPred(npred), nForw(nforw), nExog(nexog), nPar(npar),
@@ -58,25 +58,7 @@ KordpDynare::KordpDynare(const char **endo,  int num_endo,
       FSSparseTensor *t = new FSSparseTensor(iord, nY+nYs+nYss+nExog, nY);
       md.insert(t);
     }
-}
 
-KordpDynare::KordpDynare(const KordpDynare &dynare) :
-  nStat(dynare.nStat), nBoth(dynare.nBoth),       nPred(dynare.nPred),
-  nForw(dynare.nForw), nExog(dynare.nExog),  nPar(dynare.nPar),
-  nYs(dynare.nYs), nYss(dynare.nYss), nY(dynare.nY), nJcols(dynare.nJcols),
-  NNZD(dynare.NNZD), nSteps(dynare.nSteps), nOrder(dynare.nOrder),
-  journal(dynare.journal), dynamicDLL(dynare.dynamicDLL),
-  ySteady(NULL), params(NULL), vCov(NULL), md(dynare.md),
-  dnl(NULL), denl(NULL), dsnl(NULL), ss_tol(dynare.ss_tol),
-  varOrder(dynare.varOrder), ll_Incidence(dynare.ll_Incidence),
-  JacobianIndices(dynare.JacobianIndices), qz_criterium(dynare.qz_criterium)
-{
-  ySteady = new Vector(*(dynare.ySteady));
-  params = new Vector(*(dynare.params));
-  vCov = new TwoDMatrix(*(dynare.vCov));
-  dnl = new DynareNameList(dynare);
-  denl = new DynareExogNameList(dynare);
-  dsnl = new DynareStateNameList(*this, *dnl, *denl);
 }
 
 KordpDynare::~KordpDynare()
@@ -103,19 +85,6 @@ KordpDynare::~KordpDynare()
     delete NNZD;
 }
 
-/** This clears the container of model derivatives and initializes it
- * inserting empty sparse tensors up to the given order. */
-ModelDerivativeContainer::ModelDerivativeContainer(const KordpDynare &model,
-                                                   TensorContainer<FSSparseTensor> &mod_ders, int order) : md(mod_ders)
-{
-  md.clear();
-  for (int iord = 1; iord <= order; iord++)
-    {
-      FSSparseTensor *t = new FSSparseTensor(iord, model.ny()+model.nys()+model.nyss()+model.nexog(), model.ny());
-      md.insert(t);
-    }
-}
-
 void
 KordpDynare::solveDeterministicSteady()
 {
@@ -296,26 +265,6 @@ KordpDynare::populateDerivativesContainer(TwoDMatrix *g, int ord, const vector<i
   md.insert(mdTi);
 }
 
-void
-KordpDynare::writeModelInfo(Journal &jr) const
-{
-  // write info on variables
-  JournalRecordPair rp(journal);
-  rp << "Information on variables" << endrec;
-  JournalRecord rec1(journal);
-  rec1 << "Number of endogenous:            " << ny() << endrec;
-  JournalRecord rec2(journal);
-  rec2 << "Number of exogenous:             " << nexog() << endrec;
-  JournalRecord rec3(journal);
-  rec3 << "Number of static:                " << nstat() << endrec;
-  JournalRecord rec4(journal);
-  rec4 << "Number of predetermined:         " << npred()+nboth() << endrec;
-  JournalRecord rec5(journal);
-  rec5 << "Number of forward looking:       " << nforw()+nboth() << endrec;
-  JournalRecord rec6(journal);
-  rec6 << "Number of both:                  " << nboth() << endrec;
-}
-
 /*********************************************************
  * LLxSteady()
  * returns ySteady extended with leads and lags suitable for
@@ -402,96 +351,6 @@ KordpDynare::ReorderDynareJacobianIndices(const vector<int> *varOrder) throw (TL
   return JacobianIndices;
 }
 
-/************************************
- * Reorder first set of columns of variables in a (jacobian) matrix
- * according to order given in  varsOrder together with the extras
- * assuming tdx ncols() - nExog is eaqual or less than length of varOrder and
- * of any of its elements too.
- ************************************/
-
-void
-KordpDynare::ReorderCols(TwoDMatrix *tdx, const vector<int> *vOrder) throw (DynareException, TLException)
-{
-
-  if (tdx->ncols() > vOrder->size())
-    throw DynareException(__FILE__, __LINE__, "Size of order var is too small");
-
-  TwoDMatrix tmp(*tdx); // temporary 2D matrix
-  TwoDMatrix &tmpR = tmp;
-  tdx->zeros(); // empty original matrix
-  // reorder the columns
-
-  for (int i = 0; i < tdx->ncols(); i++)
-    tdx->copyColumn(tmpR, (*vOrder)[i], i);
-}
-
-void
-KordpDynare::ReorderCols(TwoDMatrix *tdx, const int *vOrder) throw (TLException)
-{
-
-  TwoDMatrix tmp(*tdx); // temporary 2D matrix
-  TwoDMatrix &tmpR = tmp;
-  tdx->zeros(); // empty original matrix
-  // reorder the columns
-  for (int i = 0; i < tdx->ncols(); i++)
-    tdx->copyColumn(tmpR, vOrder[i], i);
-}
-
-/***********************************************************************
- * Recursive hierarchical block reordering of the higher order, input model
- *	derivatives inc. Hessian
- * This is now obsolete but kept in in case it is needed
- ***********************************************************************/
-
-void
-KordpDynare::ReorderBlocks(TwoDMatrix *tdx, const vector<int> *vOrder) throw (DynareException, TLException)
-{
-  // determine order of the matrix
-
-  double dbOrder = log((double) tdx->ncols())/log((double) nJcols);
-  int ibOrder = (int) dbOrder;
-  if ((double) ibOrder != dbOrder || ibOrder > nOrder)
-    {
-      ostringstream msg;
-      msg << "Wrong order " << dbOrder;
-      throw DynareException(__FILE__, __LINE__, msg.str());
-    }
-
-  TwoDMatrix tmp(*tdx); // temporary 2D matrix
-  TwoDMatrix &tmpR = tmp;
-  tdx->zeros(); // empty original matrix
-
-  if (ibOrder > 1)
-    {
-      int nBlocks = tmp.ncols()/ nJcols;
-      int bSize = tmp.ncols()/nBlocks;
-      for (int j = 0; j < nBlocks;  ++j)
-        {
-          TwoDMatrix subtdx(tmpR, bSize*((*vOrder)[j]), bSize);
-          ReorderBlocks(&subtdx, vOrder);
-          tdx->place(subtdx, 0, bSize*j);
-        }
-    }
-  else
-    {
-      if (tdx->ncols() > vOrder->size())
-        throw DynareException(__FILE__, __LINE__, "Size of order var is too small");
-
-      // reorder the columns
-      for (int i = 0; i < tdx->ncols(); i++)
-        tdx->copyColumn(tmpR, (*vOrder)[i], i);
-    }
-}
-
-void
-KordpVectorFunction::eval(const ConstVector &in, Vector &out) throw (DynareException)
-{
-  check_for_eval(in, out);
-  Vector xx(d.nexog());
-  xx.zeros();
-  d.evaluateSystem(out, in, xx);
-}
-
 /**************************************************************************************/
 /*       DynareNameList class                                                         */
 /**************************************************************************************/
diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.hh b/mex/sources/k_order_perturbation/k_ord_dynare.hh
index 7a5323cf7538ffbe3a5b015ebc75f258911e68ad..1f1ee91399bdfb1e1f4c90d95d63f2a94b7c2d59 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.hh
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.hh
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2005 Ondra Kamenik
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -110,7 +110,6 @@ class KordpDynare : public DynamicModel
   friend class DynareNameList;
   friend class DynareExogNameList;
   friend class DynareStateNameList;
-  friend class KordpDynareJacobian;
   friend class DynamicModelDLL;
 
   const int nStat;
@@ -150,8 +149,6 @@ public:
               const vector<int> *varOrder, const TwoDMatrix *ll_Incidence,
               double qz_criterium) throw (TLException);
 
-  /** Makes a deep copy of the object. */
-  KordpDynare(const KordpDynare &dyn);
   virtual ~KordpDynare();
   int
   nstat() const
@@ -257,58 +254,11 @@ public:
   {
     return new KordpDynare(*this);
   }
-  void ReorderCols(TwoDMatrix *tdx, const int *varOrder) throw (TLException);
-  void ReorderCols(TwoDMatrix *tdx, const vector<int> *varOrder) throw (DynareException, TLException);
   Vector *LLxSteady(const Vector &yS) throw (DynareException, TLException); // returns ySteady extended with leads and lags
 
 private:
-  void writeModelInfo(Journal &jr) const;
   vector<int> *ReorderDynareJacobianIndices(const vector<int> *varOrder) throw (TLException);
-  void ReorderBlocks(TwoDMatrix *tdx, const vector<int> *vOrder) throw (DynareException, TLException);
   void populateDerivativesContainer(TwoDMatrix *g, int ord, const vector<int> *vOrder);
 };
 
-/****************************
- * ModelDerivativeContainer manages derivatives container
- ************************************/
-
-class ModelDerivativeContainer
-{
-protected:
-  TensorContainer<FSSparseTensor> &md;
-public:
-  ModelDerivativeContainer(const KordpDynare &model, TensorContainer<FSSparseTensor> &mod_ders,
-                           int order);
-  void load(int i, int iord, const int *vars, double res);
-};
-
-/****************************
- *  K-Order Perturbation instance of VectorFunction:
- ************************************/
-
-class KordpVectorFunction : public ogu::VectorFunction
-{
-protected:
-  KordpDynare &d;
-public:
-  KordpVectorFunction(KordpDynare &dyn) :
-    d(dyn)
-  {
-  }
-  virtual ~KordpVectorFunction()
-  {
-  }
-  int
-  inDim() const
-  {
-    return d.ny();
-  }
-  int
-  outDim() const
-  {
-    return d.ny();
-  }
-  void eval(const ConstVector &in, Vector &out) throw (DynareException);
-};
-
 #endif
diff --git a/mex/sources/k_order_perturbation/k_order_perturbation.cc b/mex/sources/k_order_perturbation/k_order_perturbation.cc
index 975deacc7652133093f3502f777ed034109a22d1..5047dc2a26e350fccfc6b74dd567e2037419b01d 100644
--- a/mex/sources/k_order_perturbation/k_order_perturbation.cc
+++ b/mex/sources/k_order_perturbation/k_order_perturbation.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -46,38 +46,6 @@
 #include <cctype>
 #include <cassert>
 
-#ifdef _MSC_VER
-
-BOOL APIENTRY
-DllMain(HANDLE hModule,
-        DWORD  ul_reason_for_call,
-        LPVOID lpReserved
-        )
-{
-  switch (ul_reason_for_call)
-    {
-    case DLL_PROCESS_ATTACH:
-    case DLL_THREAD_ATTACH:
-    case DLL_THREAD_DETACH:
-    case DLL_PROCESS_DETACH:
-      break;
-    }
-  return TRUE;
-}
-
-// Some MS Windows preambles
-// This is an example of an exported variable
-K_ORDER_PERTURBATION_API int nK_order_perturbation = 0;
-
-// This is an example of an exported function.
-K_ORDER_PERTURBATION_API int
-fnK_order_perturbation(void)
-{
-  return 42;
-}
-
-#endif // _MSC_VER
-
 #if defined(MATLAB_MEX_FILE) || defined(OCTAVE_MEX_FILE)  // exclude mexFunction for other applications
 
 const char **
@@ -235,7 +203,7 @@ extern "C" {
     const int widthExog = (int) mxGetN(mxFldp);
     const char **exoNamesMX = DynareMxArrayToString(mxFldp, nexo, widthExog);
 
-    if ((nEndo != nendo) || (nExog != nexo))                                                 //(nPar != npar)
+    if ((nEndo != nendo) || (nExog != nexo))
       mexErrMsgTxt("Incorrect number of input parameters.");
 
     /* Fetch time index */
@@ -290,14 +258,8 @@ extern "C" {
         app.getFoldDecisionRule().writeMMap(mm, string());
 
         // get latest ysteady
-        double *dYsteady = (dynare.getSteady().base());
         ySteady = (Vector *)(&dynare.getSteady());
 
-        // developement of the output.
-        double  *dgy, *dgu, *ysteady;
-        int nb_row_x;
-
-        ysteady = NULL;
         if (kOrder == 1)
           {
             /* Set the output pointer to the output matrix ysteady. */