diff --git a/main.for b/main.for
index 17311c5ad66c56981d57ce9033201f64e3c4f6b7..9b74209edb73b356a7a9e8a3f2e38d97f6558bae 100644
--- a/main.for
+++ b/main.for
@@ -648,7 +648,7 @@ C MCMC BURN-IN
         DO it = 1,nt
 	   IF (thetaprior(it,3).LT.thetaprior(it,4)) THEN
 	    CALL SLICE2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk(1:nobs,:),
-	1             theta0,thetaprior(it,:),pdftheta(it),pdll,
+	1             theta0,thetaprior(it,:),pdftheta(it),
      2                NEVAL(it),theta(it))
           theta0(it) = theta(it)
          ENDIF
@@ -818,7 +818,7 @@ C MCMC RECORDING phase
 	  DO it = 1,nt
 	   IF (thetaprior(it,3).LT.thetaprior(it,4)) THEN
 	    CALL SLICE2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk(1:nobs,:),
-	1                 theta0,thetaprior(it,:),pdftheta(it),pdll,
+	1                 theta0,thetaprior(it,:),pdftheta(it),
      2                NEVAL(it),theta(it))
           theta0(it) = theta(it)
          ENDIF
diff --git a/ptheta2.for b/ptheta2.for
index 8b36c62cb5e0cb13427cc25eda991b1f461d7985..0c77cb46a2abd2c55f1ad761dd0bd0c692645672 100644
--- a/ptheta2.for
+++ b/ptheta2.for
@@ -21,7 +21,7 @@ C You should have received a copy of the GNU General Public License
 C along with DMM.  If not, see <http://www.gnu.org/licenses/>.
 C ----------------------------------------------------------------
 	DOUBLE PRECISION FUNCTION PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,
-	1 S,yk,theta,thetaprior,tipo,pdll)
+	1 S,yk,theta,thetaprior,tipo)
 #if defined(__CYGWIN32__) || defined(_WIN32)
 #ifdef __INTEL_COMPILER
       USE dfwin
@@ -31,23 +31,6 @@ C ----------------------------------------------------------------
       USE ISO_C_UTILITIES
       USE DLFCN
 #endif
-	INTERFACE
-	 SUBROUTINE DESIGN(ny,nz,nx,nu,ns,nt,theta,c,H,G,a,F,R)
-	 INTEGER ny,nz,nx,nu,ns(6),nt
-	 DOUBLE PRECISION theta(nt)
-	 DOUBLE PRECISION c(ny,max(1,nz),ns(1)),H(ny,nx,ns(2)),
-	1 G(ny,nu,ns(3)),a(nx,ns(4)),F(nx,nx,ns(5)),R(nx,nu,ns(6))
-	 END SUBROUTINE
-	END INTERFACE
-	CHARACTER*1 fittizia
-#if defined(__CYGWIN32__) || defined(_WIN32)
-	  POINTER (pdll,fittizia)	! ASSOCIATE  pointer pdll alla DLL ad una varibile fittizia
-	  POINTER (pdesign,DESIGN)	! IMPORTANT associo il puntatore pdesign alla Interface definita
-#else
-	  TYPE(C_PTR) :: pdll
-      TYPE(C_FUNPTR) :: pdesign=C_NULL_FUNPTR
-	  PROCEDURE(DESIGN), POINTER :: ptrdesign=>NULL()
-#endif
 
 C INPUT
 	INTEGER it,nobs,d(2),ny,nz,nx,nu,ns(6),nt,S(nobs,6)
@@ -66,16 +49,9 @@ C LOCALS
 
 
 C computes the log-posterior
-#if defined(__CYGWIN32__) || defined(_WIN32)
-	  pdesign = getprocaddress(pdll, "design_"C)
+#if defined(ORIGDLL)
 	  CALL DESIGN(ny,nz,nx,nu,ns,nt,theta,c,H,G,a,F,R)
 #else
-	  pdesign = DLSym(pdll, 'design_'//C_NULL_CHAR)
-      IF(.NOT.C_ASSOCIATED(pdesign)) THEN
-         WRITE(*,*) ' Error in dlsym: ', C_F_STRING(DLError())
-	  END IF
-	  CALL C_F_PROCPOINTER(CPTR=pdesign, FPTR=ptrdesign)
-	  CALL ptrdesign(ny,nz,nx,nu,ns,nt,theta,c,H,G,a,F,R)
 #endif
 	CALL IKF2(d,ny,nz,nx,nu,ns,S(1:max(d(1),1),1:6),
 	1          yk(1:max(d(1),1),1:ny+nz),
diff --git a/slice2.for b/slice2.for
index 6810e700ab2387ff42e66865c4d1bc03d0d0f304..80d673ef0ec08a9763a27650d8a9ff2e538a5958 100644
--- a/slice2.for
+++ b/slice2.for
@@ -22,13 +22,11 @@ C You should have received a copy of the GNU General Public License
 C along with DMM.  If not, see <http://www.gnu.org/licenses/>.
 C -------------------------------------------------------------
 	SUBROUTINE SLICE2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1                  theta,thetaprior,tipo,pdll,NEVAL,XSIM)
+	1                  theta,thetaprior,tipo,NEVAL,XSIM)
 C INPUT
 	INTEGER it,nobs,d(2),ny,nz,nx,nu,ns(6),nt,S(nobs,6)
 	DOUBLE PRECISION yk(nobs,ny+nz),theta(nt),thetaprior(4)
 	CHARACTER*2 tipo
-	CHARACTER*1 fittizia
-	POINTER (pdll,fittizia)
 
 C OUTPUT
 	INTEGER NEVAL
@@ -50,7 +48,7 @@ C    THIS DEFINES THE SLICE S={x: z < ln(f(x))}
 C -------------------------------------------------------
 	theta(it) = XOLD
 	FXOLD=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1              theta,thetaprior,tipo,pdll)
+	1              theta,thetaprior,tipo)
 	NEVAL = NEVAL + 1
       U = genunf(0.D0,1.D0)
 	Z = FXOLD + DLOG(U)
@@ -71,14 +69,14 @@ C	U = G05CAF(U)
 	 DO 100 WHILE(L.GT.XLB)
         theta(it) = L
  	  FXL=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1              theta,thetaprior,tipo,pdll)
+	1              theta,thetaprior,tipo)
 	  NEVAL = NEVAL + 1
 	  IF (FXL.LE.Z) GOTO 110
 100	   L = L - W
 110     DO 200 WHILE(R.LT.XUB)
         theta(it) = R
  	  FXR=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1              theta,thetaprior,tipo,pdll)
+	1              theta,thetaprior,tipo)
 	  NEVAL = NEVAL + 1
 	  IF (FXR.LE.Z) GOTO 210
 200	 R = R + W
@@ -92,7 +90,7 @@ C	 U = G05CAF(U)
 	  IF (L.LE.XLB) GOTO 310
 	  theta(it) = L
  	  FXL=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1              theta,thetaprior,tipo,pdll)
+	1              theta,thetaprior,tipo)
 	  NEVAL = NEVAL + 1
 	  IF (FXL.LE.Z) GOTO 310
 	  L = L - W
@@ -102,7 +100,7 @@ C	 U = G05CAF(U)
 	  IF (R.GE.XLB) GOTO 410
 	  theta(it) = R
  	  FXR=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1              theta,thetaprior,tipo,pdll)
+	1              theta,thetaprior,tipo)
 	  NEVAL = NEVAL + 1
 	  IF (FXR.LE.Z) GOTO 410
 	  R = R + W
@@ -122,7 +120,7 @@ C	 U = G05CAF(U)
 	 XSIM = L + U*(R - L)
 	 theta(it) = XSIM
 	 FXSIM=PTHETA2(it,nobs,d,ny,nz,nx,nu,ns,nt,S,yk,
-	1               theta,thetaprior,tipo,pdll)
+	1               theta,thetaprior,tipo)
 	 NEVAL = NEVAL + 1
 	 IF (FXSIM.GE.Z) OK = 1
 	 IF(XSIM.GT.XOLD) THEN