diff --git a/extreme_fit/function/abstract_function.py b/extreme_fit/function/abstract_function.py
index e563c3d0ddd0e6107f6ecbceeabad4d0bce2dffe..4a337b0a0bdb4d30bb05e42e9a445fd1bac6ce8b 100644
--- a/extreme_fit/function/abstract_function.py
+++ b/extreme_fit/function/abstract_function.py
@@ -1,3 +1,5 @@
+import numpy as np
+
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 
 
@@ -6,3 +8,5 @@ class AbstractFunction(object):
     def __init__(self, coordinates: AbstractCoordinates):
         self.coordinates = coordinates
 
+    def transform(self, coordinate: np.ndarray) -> np.ndarray:
+        return self.coordinates.transformation.transform_array(coordinate)
diff --git a/extreme_fit/function/abstract_quantile_function.py b/extreme_fit/function/abstract_quantile_function.py
index d86b85550e337dfae006db3adbeb73e67924687c..e1f4b9f4d7650e7390d40b37fa231c38fcf8514e 100644
--- a/extreme_fit/function/abstract_quantile_function.py
+++ b/extreme_fit/function/abstract_quantile_function.py
@@ -10,7 +10,11 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo
 
 class AbstractQuantileFunction(AbstractFunction):
 
-    def get_quantile(self, coordinate: np.ndarray) -> float:
+    def get_quantile(self, coordinate: np.ndarray, is_transformed: bool = True) -> float:
+        transformed_coordinate = coordinate if is_transformed else self.transform(coordinate)
+        return self._get_quantile(transformed_coordinate)
+
+    def _get_quantile(self, coordinate: np.ndarray):
         raise NotImplementedError
 
     def visualize(self, show=True):
@@ -43,7 +47,7 @@ class QuantileFunctionFromParamFunction(AbstractQuantileFunction):
         super().__init__(coordinates)
         self.param_function = param_function
 
-    def get_quantile(self, coordinate: np.ndarray) -> float:
+    def _get_quantile(self, coordinate: np.ndarray) -> float:
         return self.param_function.get_param_value(coordinate)
 
 
@@ -54,6 +58,6 @@ class QuantileFunctionFromMarginFunction(AbstractQuantileFunction):
         self.margin_function = margin_function
         self.quantile = quantile
 
-    def get_quantile(self, coordinate: np.ndarray) -> float:
+    def _get_quantile(self, coordinate: np.ndarray) -> float:
         gev_params = self.margin_function.get_gev_params(coordinate)
         return gev_params.quantile(self.quantile)
diff --git a/extreme_fit/function/margin_function/independent_margin_function.py b/extreme_fit/function/margin_function/independent_margin_function.py
index ab8f7917edd1fc25c9b1df7719e9c9abf225f9d0..ccb6dba83812a9265443acce3c0e90e49c72ab7a 100644
--- a/extreme_fit/function/margin_function/independent_margin_function.py
+++ b/extreme_fit/function/margin_function/independent_margin_function.py
@@ -32,8 +32,7 @@ class IndependentMarginFunction(AbstractMarginFunction):
             gev_params[gev_param_name] = param_function.get_param_value(transformed_coordinate)
         return GevParams.from_dict(gev_params)
 
-    def transform(self, coordinate: np.ndarray) -> np.ndarray:
-        return self.coordinates.transformation.transform_array(coordinate)
+
 
 
 
diff --git a/projects/quantile_regression_vs_evt/AbstractSimulation.py b/projects/quantile_regression_vs_evt/AbstractSimulation.py
index a757e77e3ffc39f07537ed8df213a70d0a045021..bb35b5184f6b3a85fbcaeebcb5d6367be0b7b0f7 100644
--- a/projects/quantile_regression_vs_evt/AbstractSimulation.py
+++ b/projects/quantile_regression_vs_evt/AbstractSimulation.py
@@ -16,16 +16,12 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo
 from spatio_temporal_dataset.coordinates.temporal_coordinates.generated_temporal_coordinates import \
     ConsecutiveTemporalCoordinates
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import \
-    CenteredScaledNormalization, IdentityTransformation
+    CenteredScaledNormalization
 from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
 from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
     AbstractSpatioTemporalObservations
 
 
-class Coordinates(object):
-    pass
-
-
 class AbstractSimulation(object):
 
     def __init__(self, nb_time_series, quantile, time_series_lengths=None, multiprocessing=False,
@@ -41,31 +37,31 @@ class AbstractSimulation(object):
         raise NotImplementedError
 
     @cached_property
-    def time_serie_length_to_observation_list(self) -> Dict[int, List[AbstractSpatioTemporalObservations]]:
+    def time_series_length_to_observation_list(self) -> Dict[int, List[AbstractSpatioTemporalObservations]]:
         d = OrderedDict()
         for length in self.time_series_lengths:
             d[length] = self.generate_all_observation(self.nb_time_series, length)
         return d
 
     @cached_property
-    def time_serie_length_to_coordinates(self) -> Dict[int, AbstractCoordinates]:
+    def time_series_length_to_coordinates(self) -> Dict[int, AbstractCoordinates]:
         d = OrderedDict()
         for length in self.time_series_lengths:
-            d[length] = ConsecutiveTemporalCoordinates.from_nb_temporal_steps(length,
-                                                                              transformation_class=self.transformation_class)
+            d[length] = ConsecutiveTemporalCoordinates.\
+                from_nb_temporal_steps(length, transformation_class=self.transformation_class)
         return d
 
     @cached_property
-    def model_class_to_time_serie_length_to_estimator_fitted(self):
+    def model_class_to_time_series_length_to_estimators(self):
         d = OrderedDict()
         for model_class in self.models_classes:
             d_sub = OrderedDict()
-            for time_serie_length, observation_list in self.time_serie_length_to_observation_list.items():
-                coordinates = self.time_serie_length_to_coordinates[time_serie_length]
-                estimators_fitted = []
+            for time_series_length, observation_list in self.time_series_length_to_observation_list.items():
+                coordinates = self.time_series_length_to_coordinates[time_series_length]
+                estimators = []
                 for observations in observation_list:
-                    estimators_fitted.append(self.get_fitted_quantile_estimator(model_class, observations, coordinates))
-                d_sub[time_serie_length] = estimators_fitted
+                    estimators.append(self.get_fitted_quantile_estimator(model_class, observations, coordinates))
+                d_sub[time_series_length] = estimators
             d[model_class] = d_sub
         return d
 
@@ -83,7 +79,7 @@ class AbstractSimulation(object):
     @cached_property
     def model_class_to_error_last_year_quantile(self):
         d = OrderedDict()
-        for model_class, d_sub in self.model_class_to_time_serie_length_to_estimator_fitted.items():
+        for model_class, d_sub in self.model_class_to_time_series_length_to_estimators.items():
             length_to_error_values = OrderedDict()
             for length, estimators_fitted in d_sub.items():
                 errors = self.compute_errors(length, estimators_fitted)
diff --git a/projects/quantile_regression_vs_evt/GevSimulation.py b/projects/quantile_regression_vs_evt/GevSimulation.py
index 62109e0ed9e5fc6d562e32c1cb2023da27687750..a1dc5697ecd0fd3ed91d1c6e6cba312f1b1235e7 100644
--- a/projects/quantile_regression_vs_evt/GevSimulation.py
+++ b/projects/quantile_regression_vs_evt/GevSimulation.py
@@ -23,7 +23,7 @@ class GevSimulation(AbstractSimulation):
     def time_series_lengths_to_margin_model(self) -> Dict[int, AbstractMarginModel]:
         d = OrderedDict()
         for length in self.time_series_lengths:
-            coordinates = self.time_serie_length_to_coordinates[length]
+            coordinates = self.time_series_length_to_coordinates[length]
             d[length] = self.create_model(coordinates)
         return d
 
@@ -31,13 +31,13 @@ class GevSimulation(AbstractSimulation):
         raise NotImplementedError
 
     def generate_all_observation(self, nb_time_series, length) -> List[AbstractSpatioTemporalObservations]:
-        coordinates = self.time_serie_length_to_coordinates[length]
+        coordinates = self.time_series_length_to_coordinates[length]
         margin_model = self.time_series_lengths_to_margin_model[length]
         return [MarginAnnualMaxima.from_sampling(nb_obs=1, coordinates=coordinates, margin_model=margin_model)
                 for _ in range(nb_time_series)]
 
     def compute_errors(self, length: int, estimators: List[AbstractQuantileEstimator]):
-        coordinates = self.time_serie_length_to_coordinates[length]
+        coordinates = self.time_series_length_to_coordinates[length]
         last_coordinate = coordinates.coordinates_values()[-1]
         # Compute true value
         margin_model = self.time_series_lengths_to_margin_model[length]