diff --git a/BayesValidRox/BayesInference/BayesInference.py b/BayesValidRox/BayesInference/BayesInference.py
index 9061ee1beb5b12b1509bb614ced7713a228b9766..9b8de34b44874345d5acb9e5542f936051263aad 100644
--- a/BayesValidRox/BayesInference/BayesInference.py
+++ b/BayesValidRox/BayesInference/BayesInference.py
@@ -259,7 +259,6 @@ class BayesInference:
             # Add the std of the PCE is chosen as emulator.
             if self.emulator:
                 stdPCE = std[out] if std is not None else np.mean(self._stdPCEPriorPred[out], axis=0)
-                # stdPCE = np.mean(self._stdPCEPriorPred[out], axis=0)
                 # Expected value of variance (Assump: i.i.d stds)
                 covMatrix += np.diag(stdPCE**3)
 
@@ -648,6 +647,7 @@ class BayesInference:
                 
                 if self.emulator:
                     stdPCE = PCEModel.RMSE[var] if PCEModel.RMSE is not None else PosteriorPred_std[var][i]
+                    stdPCE = PosteriorPred_std[var][i]
                     # Expected value of variance (Assump: i.i.d stds)
                     cov += np.diag(stdPCE**3)
                     
@@ -851,7 +851,7 @@ class BayesInference:
                 
                 # Train a GPR meta-model using MAP
                 self.errorMetaModel = PCEModel.create_ModelError(self.BiasInputs,y_MAP,
-                                                                     Name=self.Name)
+                                                                      Name=self.Name)
             # -----------------------------------------------------
             # ----- Loop over the perturbed observation data ------
             # -----------------------------------------------------
@@ -869,7 +869,7 @@ class BayesInference:
                                                                                          name=self.Name)
                 # TODO: Correct the predictions with Model discrepancy
                 if hasattr(self, 'errorModel') and self.errorModel:
-                    self.__meanPCEPriorPred, PosteriorPred_std = self.errorMetaModel.eval_errormodel(self.BiasInputs,
+                    self.__meanPCEPriorPred, self._stdPCEPriorPred = self.errorMetaModel.eval_errormodel(self.BiasInputs,
                                                                               self.__meanPCEPriorPred)
                 
                 # Surrogate model's error using RMSE of test data
diff --git a/BayesValidRox/BayesInference/MCMC.py b/BayesValidRox/BayesInference/MCMC.py
index c04871b3e1aa214c1199f43d415a15195fc6c158..77efc6954181046d4ffe2b0d7c4c28207141079a 100755
--- a/BayesValidRox/BayesInference/MCMC.py
+++ b/BayesValidRox/BayesInference/MCMC.py
@@ -451,7 +451,7 @@ class MCMC():
             self.counter += 1
 
         if hasattr(self, 'errorMetaModel') and BayesObj.errorModel:
-            meanPred, _ = self.errorMetaModel.eval_errormodel(BayesObj.BiasInputs,meanPred)
+            meanPred, stdPred = self.errorMetaModel.eval_errormodel(BayesObj.BiasInputs,meanPred)
 
         return meanPred, stdPred
     
diff --git a/BayesValidRox/surrogate_models/surrogate_models.py b/BayesValidRox/surrogate_models/surrogate_models.py
index 337440c7147e9246f1a920e28537bbf2cb5c1d95..a014e709a548bee3c8323eac8779e70a7d4eff02 100644
--- a/BayesValidRox/surrogate_models/surrogate_models.py
+++ b/BayesValidRox/surrogate_models/surrogate_models.py
@@ -16,6 +16,7 @@ import h5py
 from mpl_toolkits import mplot3d
 import matplotlib.pyplot as plt
 from matplotlib.offsetbox import AnchoredText
+from sklearn.preprocessing import MinMaxScaler
 
 SIZE = 30
 plt.rc('figure', figsize = (24, 16))
@@ -41,6 +42,11 @@ from scipy import stats
 from sklearn.linear_model import LinearRegression, ARDRegression
 from sklearn import linear_model
 from sklearn.metrics import r2_score, mean_squared_error
+from sklearn.gaussian_process import GaussianProcessRegressor
+import sklearn.gaussian_process.kernels as kernels
+# import (RBF, Matern, RationalQuadratic,
+#                                       ExpSineSquared, DotProduct,
+#                                       ConstantKernel)
 import os
 import sys
 import multiprocessing
@@ -51,6 +57,7 @@ from scipy.spatial import distance
 import scipy.linalg as spla
 from numpy.polynomial.polynomial import polyval
 import chaospy
+from joblib import Parallel,delayed
 
 from BayesInference.Discrepancy import Discrepancy
 from .ExpDesigns import ExpDesigns
@@ -718,23 +725,18 @@ class Metamodel:
     #--------------------------------------------------------------------------------------------------------
     def GaussianProcessEmulator(self, X, y, nugTerm=None,autoSelect=False, varIdx=None):
         
-        from sklearn.gaussian_process import GaussianProcessRegressor
-        from sklearn.gaussian_process.kernels import (RBF, Matern, RationalQuadratic,
-                                              ExpSineSquared, DotProduct,
-                                              ConstantKernel)
-        
         nugTerm = nugTerm if nugTerm else np.var(y)
 
-        kernels = [nugTerm * RBF(length_scale=1.0, length_scale_bounds=(1e-15, 1e5)),
-                   nugTerm * RationalQuadratic(length_scale=0.2, alpha=1.0),
-                   # 1.0 * ExpSineSquared(length_scale=1.0, length_scale_bounds=(1e-05, 1e05)),
-                   nugTerm * Matern(length_scale=1.0, length_scale_bounds=(1e-1, 1e1),
-                                nu=1.5)]
+        Kernels = [ nugTerm * kernels.RBF(length_scale=1.0, length_scale_bounds=(1e-25, 1e15)),
+                   nugTerm * kernels.RationalQuadratic(length_scale=0.2, alpha=1.0),
+                   # 1.0 * kernels.ExpSineSquared(length_scale=1.0, length_scale_bounds=(1e-05, 1e05)),
+                   nugTerm * kernels.Matern(length_scale=1.0, length_scale_bounds=(1e-1, 1e1),
+                                            nu=2.5)]
         
         if autoSelect:# Automatic selection of the kernel
             gp = {}
             BME = []
-            for i, kernel in enumerate(kernels):
+            for i, kernel in enumerate(Kernels):
                 gp[i] = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=2,
                                                   normalize_y=True)
             
@@ -746,7 +748,7 @@ class Metamodel:
             gp = gp[np.argmax(BME)]    
         
         else:
-            gp = GaussianProcessRegressor(kernel=kernels[0], n_restarts_optimizer=5,
+            gp = GaussianProcessRegressor(kernel=Kernels[0], n_restarts_optimizer=3,
                                           normalize_y=False)
             gp.fit(X, y)
 
@@ -839,8 +841,6 @@ class Metamodel:
             
                 
             # Parallel fit regression
-            from joblib import Parallel,delayed
-                
             if self.metaModel.lower() == 'gpe':
                 outDict = Parallel(n_jobs=-1, prefer='threads')(
                     delayed(self.GaussianProcessEmulator)(CollocationPoints,OutputMatrix[:,idx]) 
@@ -894,18 +894,8 @@ class Metamodel:
         Model = self.ModelObj
         outputNames = Model.Output.Names
         self.errorRegMethod = 'GPE'
-        self.errorCoeffsDict= self.AutoVivification()
-        self.errorBasisDict = self.AutoVivification()
-        self.errorScoresDict = self.AutoVivification()
         self.errorclf_poly = self.AutoVivification()
-        self.errorLCerror = self.AutoVivification()
         self.errorScale = self.AutoVivification()
-        # Original EDY
-        EDY = self.ExpDesign.Y
-        
-        # Prepare the input matrix
-        from sklearn.preprocessing import MinMaxScaler
-        # self.errorScale = {}
         
         # Read data
         if Name.lower() == 'calib':
@@ -936,7 +926,7 @@ class Metamodel:
     def eval_errormodel(self,X,y_pred):
         meanPCEOutputs = {}
         stdPCEOutputs = {}
-        
+
         for Outkey, ValuesDict in self.errorclf_poly.items():
             
             PCEOutputs_mean = np.zeros_like(y_pred[Outkey])
@@ -951,7 +941,7 @@ class Metamodel:
                 for j,pred in enumerate(y_pred[Outkey]):
                     BiasInputs = X[Outkey]#np.hstack((X[Outkey],pred.reshape(-1,1)))
                     Samples_S = scaler.transform(BiasInputs)
-
+                    
                     PCEOutputs_mean[j], PCEOutputs_std[j] = gp.predict(Samples_S, return_std=True)
                     PCEOutputs_mean[j] += pred