diff --git a/extreme_estimator/estimator/abstract_estimator.py b/extreme_estimator/estimator/abstract_estimator.py
index 76d6622b14c022d472296c64733ff4b191d1cb1f..71c687b72e338fdc61eca81a2b66141c80d9a03b 100644
--- a/extreme_estimator/estimator/abstract_estimator.py
+++ b/extreme_estimator/estimator/abstract_estimator.py
@@ -69,7 +69,8 @@ class AbstractEstimator(object):
     # Methods to override in the child class
 
     def _fit(self):
-        pass
+        raise NotImplementedError
 
     def _error(self, true_max_stable_params: dict):
-        pass
+        raise NotImplementedError
+
diff --git a/extreme_estimator/estimator/full_estimator/full_estimator_for_simulation.py b/extreme_estimator/estimator/full_estimator/full_estimator_for_simulation.py
index ca6cfed3d9b12ab884ffe3148cb3775f485792a1..ef250526600057b2ac56bee17835a9fca00b407b 100644
--- a/extreme_estimator/estimator/full_estimator/full_estimator_for_simulation.py
+++ b/extreme_estimator/estimator/full_estimator/full_estimator_for_simulation.py
@@ -15,8 +15,7 @@ class FullEstimatorInASingleStepWithSmoothMargin_LinearAllParametersAllDims_Smit
                    max_stable_model=Smith())
 
 
-class FullEstimatorInASingleStepWithSmoothMargin_Constant_Smith(
-    FullEstimatorInASingleStepWithSmoothMargin):
+class FullEstimatorInASingleStepWithSmoothMargin_Constant_Smith(FullEstimatorInASingleStepWithSmoothMargin):
 
     @classmethod
     def from_dataset(cls, dataset: AbstractDataset):
diff --git a/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py b/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
index 26f2a98f5e6ba40c820b6f496438433218d65aca..ab8742b9ee0ebf6a24daaccad6f69c3576a4acde 100644
--- a/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
+++ b/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
@@ -71,6 +71,6 @@ class AbstractMarginModel(AbstractModel):
 
     def fitmargin_from_maxima_gev(self, maxima_gev: np.ndarray, df_coordinates: pd.DataFrame) \
             -> AbstractMarginFunction:
-        pass
+        raise NotImplementedError
 
 
diff --git a/spatio_temporal_dataset/coordinates/abstract_coordinates.py b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
index db5506200790f5e4991e7a0726d0981662af2583..ac16e24cbd3a322afacdd4a39896cf2e2bb534e8 100644
--- a/spatio_temporal_dataset/coordinates/abstract_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
@@ -9,12 +9,15 @@ from mpl_toolkits.mplot3d import Axes3D
 from spatio_temporal_dataset.slicer.abstract_slicer import AbstractSlicer, df_sliced
 from spatio_temporal_dataset.slicer.spatial_slicer import SpatialSlicer
 from spatio_temporal_dataset.slicer.spatio_temporal_slicer import SpatioTemporalSlicer
-from spatio_temporal_dataset.slicer.split import s_split_from_df, TEST_SPLIT_STR, \
-    TRAIN_SPLIT_STR, ind_train_from_s_split, Split
+from spatio_temporal_dataset.slicer.split import s_split_from_df, ind_train_from_s_split, Split
 from spatio_temporal_dataset.slicer.temporal_slicer import TemporalSlicer
 
 
 class AbstractCoordinates(object):
+    """
+
+    So far, the train_split_ratio is the same between the spatial part of the data, and the temporal part
+    """
     # Spatial columns
     COORDINATE_X = 'coord_x'
     COORDINATE_Y = 'coord_y'
@@ -32,9 +35,17 @@ class AbstractCoordinates(object):
         self.df_all_coordinates = df_coord  # type: pd.DataFrame
         self.s_split_spatial = s_split_spatial  # type: pd.Series
         self.s_split_temporal = s_split_temporal  # type: pd.Series
-        self.slicer = slicer_class(ind_train_spatial=self.ind_train_spatial,
-                                   ind_train_temporal=self.ind_train_temporal)  # type: AbstractSlicer
-        assert isinstance(self.slicer, AbstractSlicer)
+        self.slicer = None  # type: AbstractSlicer
+
+        # Load the slicer
+        if slicer_class is TemporalSlicer:
+            self.slicer = TemporalSlicer(self.ind_train_temporal)
+        elif slicer_class is SpatialSlicer:
+            self.slicer = SpatialSlicer(self.ind_train_spatial)
+        elif slicer_class is SpatioTemporalSlicer:
+            self.slicer = SpatioTemporalSlicer(self.ind_train_spatial, self.ind_train_temporal)
+        else:
+            raise ValueError("Unknown slicer_class: {}".format(slicer_class))
 
     # ClassMethod constructor
 
@@ -43,10 +54,12 @@ class AbstractCoordinates(object):
         # Extract df_coordinate
         coordinate_columns = [c for c in df.columns if c in cls.COORDINATES_NAMES]
         df_coord = df.loc[:, coordinate_columns].copy()
+
         # Extract the split
         split_columns = [c for c in df.columns if c in [cls.SPATIAL_SPLIT, cls.TEMPORAL_SPLIT]]
         s_split_spatial = df[cls.SPATIAL_SPLIT].copy() if cls.SPATIAL_SPLIT in df.columns else None
         s_split_temporal = df[cls.TEMPORAL_SPLIT].copy() if cls.TEMPORAL_SPLIT in df.columns else None
+
         # Infer the slicer class
         if s_split_temporal is None and s_split_spatial is None:
             raise ValueError('Both split are unspecified')
@@ -56,6 +69,7 @@ class AbstractCoordinates(object):
             slicer_class = SpatialSlicer
         else:
             slicer_class = SpatioTemporalSlicer
+
         # Remove all the columns used from df
         columns_used = coordinate_columns + split_columns
         df.drop(columns_used, axis=1, inplace=True)
@@ -64,22 +78,13 @@ class AbstractCoordinates(object):
 
     @classmethod
     def from_df_and_slicer(cls, df: pd.DataFrame, slicer_class: type, train_split_ratio: float = None):
-        # So far, the train_split_ratio is the same between the spatial part of the data, and the temporal part
-
         # All the index should be unique
         assert len(set(df.index)) == len(df)
 
         # Create a spatial split
-        if slicer_class in [SpatialSlicer, SpatioTemporalSlicer]:
-            s_split_spatial = s_split_from_df(df, cls.COORDINATE_X, cls.SPATIAL_SPLIT, train_split_ratio, True)
-        else:
-            s_split_spatial = None
-
+        s_split_spatial = s_split_from_df(df, cls.COORDINATE_X, cls.SPATIAL_SPLIT, train_split_ratio, True)
         # Create a temporal split
-        if slicer_class in [TemporalSlicer, SpatioTemporalSlicer]:
-            s_split_temporal = s_split_from_df(df, cls.COORDINATE_T, cls.TEMPORAL_SPLIT, train_split_ratio, False)
-        else:
-            s_split_temporal = None
+        s_split_temporal = s_split_from_df(df, cls.COORDINATE_T, cls.TEMPORAL_SPLIT, train_split_ratio, False)
 
         return cls(df_coord=df, slicer_class=slicer_class,
                    s_split_spatial=s_split_spatial, s_split_temporal=s_split_temporal)
@@ -217,4 +222,3 @@ class AbstractCoordinates(object):
 
     def __eq__(self, other):
         return self.df_merged.equals(other.df_merged)
-
diff --git a/spatio_temporal_dataset/coordinates/spatial_coordinates/coordinates_1D.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/coordinates_1D.py
index 3a05d2dd8a154a15958dc5870338183b779fc529..15340ca1561e9d91b6b54d5695e1a05e6bbd57ad 100644
--- a/spatio_temporal_dataset/coordinates/spatial_coordinates/coordinates_1D.py
+++ b/spatio_temporal_dataset/coordinates/spatial_coordinates/coordinates_1D.py
@@ -1,9 +1,7 @@
-import pandas as pd
-
 import numpy as np
+import pandas as pd
 from rpy2.robjects import r
 
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \
     AbstractSpatialCoordinates
 
diff --git a/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_spatial_coordinates.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_spatial_coordinates.py
index 5a9e7407dac32a925ede43c0f252e3477aa0d2d6..f2716fbb8107a6ea48a2eca62625c79235238a7c 100644
--- a/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_spatial_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_spatial_coordinates.py
@@ -1,11 +1,10 @@
 import math
+
+import matplotlib.pyplot as plt
 import numpy as np
 import pandas as pd
 from rpy2.robjects import r
 
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
-import matplotlib.pyplot as plt
-
 from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \
     AbstractSpatialCoordinates
 
@@ -26,10 +25,10 @@ class CircleSpatialCoordinates(AbstractSpatialCoordinates):
         return cls.from_df(cls.df_spatial(nb_points, max_radius), train_split_ratio)
 
     def visualization_2D(self):
-        r = 1.0
-        circle1 = plt.Circle((0, 0), r, color='r', fill=False)
-        plt.gcf().gca().set_xlim((-r, r))
-        plt.gcf().gca().set_ylim((-r, r))
+        radius = 1.0
+        circle1 = plt.Circle((0, 0), radius, color='r', fill=False)
+        plt.gcf().gca().set_xlim((-radius, radius))
+        plt.gcf().gca().set_ylim((-radius, radius))
         plt.gcf().gca().add_artist(circle1)
         super().visualization_2D()
 
diff --git a/spatio_temporal_dataset/coordinates/spatio_temporal_coordinates/generated_spatio_temporal_coordinates.py b/spatio_temporal_dataset/coordinates/spatio_temporal_coordinates/generated_spatio_temporal_coordinates.py
index fd1aa1f374f4b6c1f00fb4cb2e5d75867aa98e11..deaccc8d1b6dd28955bb5dd0a5b56e777233a4f5 100644
--- a/spatio_temporal_dataset/coordinates/spatio_temporal_coordinates/generated_spatio_temporal_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/spatio_temporal_coordinates/generated_spatio_temporal_coordinates.py
@@ -1,12 +1,8 @@
 import pandas as pd
 
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.coordinates.spatial_coordinates.coordinates_1D import UniformSpatialCoordinates
 from spatio_temporal_dataset.coordinates.spatio_temporal_coordinates.abstract_spatio_temporal_coordinates import \
     AbstractSpatioTemporalCoordinates
-from spatio_temporal_dataset.coordinates.temporal_coordinates.generated_temporal_coordinates import \
-    ConsecutiveTemporalCoordinates
-from spatio_temporal_dataset.slicer.spatio_temporal_slicer import SpatioTemporalSlicer
 
 
 class UniformSpatioTemporalCoordinates(AbstractSpatioTemporalCoordinates):
diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/tranformation_3D.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/tranformation_3D.py
index ba2167d943d782c85784fcd0bd79970014d7e12c..e0cd32fdf69c446fecb928f2865a29459e586ab6 100644
--- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/tranformation_3D.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/tranformation_3D.py
@@ -1,6 +1,7 @@
 import pandas as pd
 import numpy as np
-from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation \
+    import AbstractTransformation
 import math
 
 
diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/transformation_2D.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/transformation_2D.py
index 471cf3676d2086b8c908eadca419a79fefc0452a..4344c66994e7195685e29f213258c80820f79fb5 100644
--- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/transformation_2D.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/transformation_2D.py
@@ -1,4 +1,5 @@
-from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation \
+    import AbstractTransformation
 import pandas as pd
 
 
diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
index de86b84c21554c1bf0734f31ba70b3106530d0ae..28887ad6c81ecc1a2b988d648ae2d4b012ddedf8 100644
--- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
@@ -1,5 +1,6 @@
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
-from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation \
+    import AbstractTransformation
 
 
 class TransformedCoordinates(AbstractCoordinates):
diff --git a/spatio_temporal_dataset/dataset/abstract_dataset.py b/spatio_temporal_dataset/dataset/abstract_dataset.py
index 8d1f27f39a1df20e0840ec16b046e728f573f668..dcf528d327771a3c6a716b319263b6e67151b86b 100644
--- a/spatio_temporal_dataset/dataset/abstract_dataset.py
+++ b/spatio_temporal_dataset/dataset/abstract_dataset.py
@@ -7,6 +7,7 @@ import numpy as np
 import pandas as pd
 
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
+from spatio_temporal_dataset.slicer.abstract_slicer import AbstractSlicer
 from spatio_temporal_dataset.slicer.split import Split
 from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
     AbstractSpatioTemporalObservations
@@ -16,14 +17,10 @@ class AbstractDataset(object):
 
     def __init__(self, observations: AbstractSpatioTemporalObservations, coordinates: AbstractCoordinates):
         assert pd.Index.equals(observations.index, coordinates.index)
-        self.observations = observations
-        self.coordinates = coordinates
+        self.observations = observations  # type: AbstractSpatioTemporalObservations
+        self.coordinates = coordinates  # type: AbstractCoordinates
         self.subset_id_to_column_idxs = None  # type: Dict[int, List[int]]
 
-    @property
-    def slicer(self):
-        return self.coordinates.slicer
-
     @classmethod
     def from_csv(cls, csv_path: str):
         assert op.exists(csv_path)
@@ -67,6 +64,10 @@ class AbstractDataset(object):
 
     # Slicer wrapper
 
+    @property
+    def slicer(self) -> AbstractSlicer:
+        return self.coordinates.slicer
+
     @property
     def train_split(self) -> Split:
         return self.slicer.train_split
@@ -99,4 +100,3 @@ def get_subset_dataset(dataset: AbstractDataset, subset_id) -> AbstractDataset:
     if observations.df_maxima_frech is not None:
         observations.df_maxima_frech = observations.df_maxima_frech.iloc[:, columns_idxs]
     return subset_dataset
-
diff --git a/spatio_temporal_dataset/dataset/simulation_dataset.py b/spatio_temporal_dataset/dataset/simulation_dataset.py
index e888cf1c82243d521fde59f875c2c202e78f8dd9..d475bfe2f6647be2838b391611c6931f08abfc32 100644
--- a/spatio_temporal_dataset/dataset/simulation_dataset.py
+++ b/spatio_temporal_dataset/dataset/simulation_dataset.py
@@ -2,7 +2,6 @@ from extreme_estimator.extreme_models.margin_model.abstract_margin_model import
 from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
-from spatio_temporal_dataset.slicer.spatial_slicer import SpatialSlicer
 from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
     AbstractSpatioTemporalObservations
 from spatio_temporal_dataset.spatio_temporal_observations.annual_maxima_observations import \
diff --git a/spatio_temporal_dataset/slicer/abstract_slicer.py b/spatio_temporal_dataset/slicer/abstract_slicer.py
index 0fa0f7307ff6d110cb9295f0fc9f314ca24c6e1d..a674a205703952b3784f7a96310f237edf267033 100644
--- a/spatio_temporal_dataset/slicer/abstract_slicer.py
+++ b/spatio_temporal_dataset/slicer/abstract_slicer.py
@@ -19,7 +19,7 @@ class AbstractSlicer(object):
     def ind_test_temporal(self) -> pd.Series:
         return ~self.ind_train_temporal
 
-    def loc_split(self, df: pd.DataFrame, split: Split):
+    def loc_split(self, df: pd.DataFrame, split: Split) -> pd.DataFrame:
         # split should belong to the list of split accepted by the slicer
         assert isinstance(split, Split)
 
@@ -52,24 +52,24 @@ class AbstractSlicer(object):
 
     # Methods that need to be defined in the child class
 
-    def specialized_loc_split(self, df: pd.DataFrame, split: Split):
-        return
+    def specialized_loc_split(self, df: pd.DataFrame, split: Split) -> pd.DataFrame:
+        raise NotImplementedError
 
     @property
     def some_required_ind_are_not_defined(self) -> bool:
-        return
+        raise NotImplementedError
 
     @property
     def train_split(self) -> Split:
-        return
+        raise NotImplementedError
 
     @property
     def test_split(self) -> Split:
-        return
+        raise NotImplementedError
 
     @property
     def splits(self) -> List[Split]:
-        return
+        raise NotImplementedError
 
 
 def df_sliced(df: pd.DataFrame, split: Split = Split.all, slicer: AbstractSlicer = None) -> pd.DataFrame:
diff --git a/spatio_temporal_dataset/slicer/spatial_slicer.py b/spatio_temporal_dataset/slicer/spatial_slicer.py
index 06b77cdca881c2f98eb33338e744ec23d80cfaad..7e2ed54d1a9cd5e4188d18bf7a2da1cc033ed07b 100644
--- a/spatio_temporal_dataset/slicer/spatial_slicer.py
+++ b/spatio_temporal_dataset/slicer/spatial_slicer.py
@@ -9,7 +9,7 @@ from spatio_temporal_dataset.slicer.split import Split
 class SpatialSlicer(AbstractSlicer):
     SPLITS = [Split.train_spatial, Split.test_spatial]
 
-    def __init__(self, ind_train_spatial: Union[None, pd.Series], ind_train_temporal: Union[None, pd.Series]):
+    def __init__(self, ind_train_spatial: Union[None, pd.Series]):
         super().__init__(ind_train_spatial, None)
 
     @property
@@ -25,10 +25,10 @@ class SpatialSlicer(AbstractSlicer):
         return Split.test_spatial
 
     @property
-    def some_required_ind_are_not_defined(self):
+    def some_required_ind_are_not_defined(self) -> bool:
         return self.ind_train_spatial is None
 
-    def specialized_loc_split(self, df: pd.DataFrame, split: Split):
+    def specialized_loc_split(self, df: pd.DataFrame, split: Split) -> pd.DataFrame:
         assert pd.Index.equals(df.index, self.ind_train_spatial.index)
         if split is Split.train_spatial:
             return df.loc[self.ind_train_spatial]
diff --git a/spatio_temporal_dataset/slicer/spatio_temporal_slicer.py b/spatio_temporal_dataset/slicer/spatio_temporal_slicer.py
index 58e8ed5d42cbffb6042906638ba2603763d08638..9ed09061bb2ed2b91e0865a56720c827eb97d522 100644
--- a/spatio_temporal_dataset/slicer/spatio_temporal_slicer.py
+++ b/spatio_temporal_dataset/slicer/spatio_temporal_slicer.py
@@ -25,10 +25,10 @@ class SpatioTemporalSlicer(AbstractSlicer):
         return Split.test_spatiotemporal
 
     @property
-    def some_required_ind_are_not_defined(self):
+    def some_required_ind_are_not_defined(self) -> bool:
         return self.ind_train_spatial is None or self.ind_train_temporal is None
 
-    def specialized_loc_split(self, df: pd.DataFrame, split: Split):
+    def specialized_loc_split(self, df: pd.DataFrame, split: Split) -> pd.DataFrame:
         assert pd.Index.equals(df.index, self.ind_train_temporal.index)
         assert pd.Index.equals(df.index, self.ind_train_spatial.index)
         if split is Split.train_spatiotemporal:
diff --git a/spatio_temporal_dataset/slicer/split.py b/spatio_temporal_dataset/slicer/split.py
index 6558fbdf133b227803f541e9d62ac259d5dac04f..8b2eea4f115957b0ca06df153d4307f1f183bebd 100644
--- a/spatio_temporal_dataset/slicer/split.py
+++ b/spatio_temporal_dataset/slicer/split.py
@@ -34,7 +34,7 @@ def split_to_display_kwargs(split: Split):
                 marker = '^'
             else:
                 marker = '>'
-    return {'marker': marker, 'linewidth': linewidth, 'gridsize':gridsize}
+    return {'marker': marker, 'linewidth': linewidth, 'gridsize': gridsize}
 
 
 ALL_SPLITS_EXCEPT_ALL = [split for split in Split if split is not Split.all]
@@ -73,15 +73,15 @@ def s_split_from_df(df: pd.DataFrame, column, split_column, train_split_ratio, s
     elif split_column in df:
         raise Exception('A split has already been defined')
     else:
-        serie = df.drop_duplicates(subset=[column], keep='first')[column]
-        assert len(df) % len(serie) == 0
-        multiplication_factor = len(df) // len(serie)
-        small_s_split = small_s_split_from_ratio(serie.index, train_split_ratio)
+        s = df.drop_duplicates(subset=[column], keep='first')[column]
+        assert len(df) % len(s) == 0
+        multiplication_factor = len(df) // len(s)
+        small_s_split = small_s_split_from_ratio(s.index, train_split_ratio)
         if spatial_split:
             # concatenation for spatial_split
             s_split = pd.concat([small_s_split for _ in range(multiplication_factor)], ignore_index=True).copy()
         else:
-            # dilatjon for the temporal split
+            # dilatation for the temporal split
             s_split = pd.Series(None, index=df.index)
             for i in range(len(s_split)):
                 s_split.iloc[i] = small_s_split.iloc[i // multiplication_factor]
diff --git a/spatio_temporal_dataset/slicer/temporal_slicer.py b/spatio_temporal_dataset/slicer/temporal_slicer.py
index acb70bb6de3efb91a001e3c470ef8a592ed689b5..68d135a523d769ea0c4914b3cca03ec398ba1def 100644
--- a/spatio_temporal_dataset/slicer/temporal_slicer.py
+++ b/spatio_temporal_dataset/slicer/temporal_slicer.py
@@ -9,7 +9,7 @@ from spatio_temporal_dataset.slicer.split import Split
 class TemporalSlicer(AbstractSlicer):
     SPLITS = [Split.train_temporal, Split.test_temporal]
 
-    def __init__(self, ind_train_spatial: Union[None, pd.Series], ind_train_temporal: Union[None, pd.Series]):
+    def __init__(self, ind_train_temporal: Union[None, pd.Series]):
         super().__init__(None, ind_train_temporal)
 
     @property
@@ -25,10 +25,10 @@ class TemporalSlicer(AbstractSlicer):
         return Split.test_temporal
 
     @property
-    def some_required_ind_are_not_defined(self):
+    def some_required_ind_are_not_defined(self) -> bool:
         return self.ind_train_temporal is None
 
-    def specialized_loc_split(self, df: pd.DataFrame, split: Split):
+    def specialized_loc_split(self, df: pd.DataFrame, split: Split) -> pd.DataFrame:
         assert pd.Index.equals(df.index, self.ind_train_temporal.index)
         if split is Split.train_temporal:
             return df.loc[self.ind_train_temporal]
diff --git a/spatio_temporal_dataset/slicer/utils.py b/spatio_temporal_dataset/slicer/utils.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/spatio_temporal_dataset/spatio_temporal_observations/abstract_spatio_temporal_observations.py b/spatio_temporal_dataset/spatio_temporal_observations/abstract_spatio_temporal_observations.py
index 9e1e27f7a89859c441fc3c2350b085e307ccb083..fd42288b38c1873fa5604544cb58011474e2d185 100644
--- a/spatio_temporal_dataset/spatio_temporal_observations/abstract_spatio_temporal_observations.py
+++ b/spatio_temporal_dataset/spatio_temporal_observations/abstract_spatio_temporal_observations.py
@@ -20,8 +20,8 @@ class AbstractSpatioTemporalObservations(object):
         assert df_maxima_gev is not None or df_maxima_frech is not None
         if df_maxima_gev is not None and df_maxima_frech is not None:
             assert pd.Index.equals(df_maxima_gev.index, df_maxima_frech.index)
-        self.df_maxima_gev = df_maxima_gev
-        self.df_maxima_frech = df_maxima_frech
+        self.df_maxima_gev = df_maxima_gev  # type: pd.DataFrame
+        self.df_maxima_frech = df_maxima_frech  # type: pd.DataFrame
 
     @classmethod
     def from_csv(cls, csv_path: str = None):
@@ -38,9 +38,10 @@ class AbstractSpatioTemporalObservations(object):
             return self.df_maxima_gev
 
     @property
-    def df_maxima_merged(self):
+    def df_maxima_merged(self) -> pd.DataFrame:
         df_maxima_list = []
-        for df, suffix in [(self.df_maxima_gev, self.OBSERVATIONS_GEV), (self.df_maxima_frech, self.OBSERVATIONS_FRECH)]:
+        for df, suffix in [(self.df_maxima_gev, self.OBSERVATIONS_GEV),
+                           (self.df_maxima_frech, self.OBSERVATIONS_FRECH)]:
             if df is not None:
                 df_maxima = df.copy()
                 df_maxima.columns = [str(c) + ' ' + suffix for c in df_maxima.columns]
diff --git a/spatio_temporal_dataset/spatio_temporal_observations/alps_precipitation_observations.py b/spatio_temporal_dataset/spatio_temporal_observations/alps_precipitation_observations.py
index d1bf3c897eb8d5974500bc9ee57e4489f60a858a..f69ed0b4ab998ac28038eaba9646e3f9e7a4011b 100644
--- a/spatio_temporal_dataset/spatio_temporal_observations/alps_precipitation_observations.py
+++ b/spatio_temporal_dataset/spatio_temporal_observations/alps_precipitation_observations.py
@@ -1,13 +1,11 @@
 import os.path as op
 
-import pandas as pd
-
-from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import AbstractSpatioTemporalObservations
+from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
+    AbstractSpatioTemporalObservations
 from utils import get_full_path
 
 
 class AlpsPrecipitationObservations(AbstractSpatioTemporalObservations):
-
     RELATIVE_PATH = r'local/spatio_temporal_datasets/Gilles  - precipitations'
     FULL_PATH = get_full_path(relative_path=RELATIVE_PATH)
 
@@ -35,4 +33,4 @@ class AlpsPrecipitationObservations(AbstractSpatioTemporalObservations):
         # print(df.head())
         # filepath = op.join(cls.FULL_PATH, 'max_precip_3j.csv')
         # assert not op.exists(filepath)
-        # df.to_csv(filepath)
\ No newline at end of file
+        # df.to_csv(filepath)
diff --git a/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py b/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
index a89dd23f991fba5b1c8388db0782364268565309..ff12071c6c6df547124a2520feeedf3c28f1e71a 100644
--- a/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
+++ b/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
@@ -3,7 +3,8 @@ import pandas as pd
 from extreme_estimator.extreme_models.margin_model.abstract_margin_model import AbstractMarginModel
 from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
-from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import AbstractSpatioTemporalObservations
+from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations \
+    import AbstractSpatioTemporalObservations
 
 
 class AnnualMaxima(AbstractSpatioTemporalObservations):
@@ -19,7 +20,8 @@ class MarginAnnualMaxima(AnnualMaxima):
     @classmethod
     def from_sampling(cls, nb_obs: int, coordinates: AbstractCoordinates,
                       margin_model: AbstractMarginModel):
-        maxima_gev = margin_model.rmargin_from_nb_obs(nb_obs=nb_obs, coordinates_values=coordinates.coordinates_values())
+        maxima_gev = margin_model.rmargin_from_nb_obs(nb_obs=nb_obs,
+                                                      coordinates_values=coordinates.coordinates_values())
         df_maxima_gev = pd.DataFrame(data=maxima_gev, index=coordinates.index)
         return cls(df_maxima_gev=df_maxima_gev)