diff --git a/experiment/meteo_france_data/plot/create_shifted_cmap.py b/experiment/meteo_france_data/plot/create_shifted_cmap.py
index dd49798ca6057e8b70c6cf78d0a162753a4bc501..7f6fc9706d61b705c20c0833ddf5a1c723667ea2 100644
--- a/experiment/meteo_france_data/plot/create_shifted_cmap.py
+++ b/experiment/meteo_france_data/plot/create_shifted_cmap.py
@@ -9,7 +9,7 @@ from experiment.meteo_france_data.plot.shifted_color_map import shiftedColorMap
 from extreme_fit.distribution.abstract_params import AbstractParams
 
 
-def get_shifted_map(vmin, vmax):
+def get_shifted_map(vmin, vmax, cmap=plt.cm.bwr):
     # Load the shifted cmap to center on a middle point
     if vmin < 0 < vmax:
         midpoint = 1 - vmax / (vmax + abs(vmin))
@@ -19,7 +19,7 @@ def get_shifted_map(vmin, vmax):
         midpoint = 0.0
     else:
         raise ValueError('Unexpected values: vmin={}, vmax={}'.format(vmin, vmax))
-    cmap = [plt.cm.coolwarm, plt.cm.bwr, plt.cm.seismic][1]
+    # cmap = [plt.cm.coolwarm, plt.cm.bwr, plt.cm.seismic][1]
     shifted_cmap = shiftedColorMap(cmap, midpoint=midpoint, name='shifted')
     return shifted_cmap
 
diff --git a/experiment/meteo_france_data/scm_models_data/abstract_study.py b/experiment/meteo_france_data/scm_models_data/abstract_study.py
index e773ac0f7bfaf80bb8c4331b12604c644b5331cb..d511884e565db80e4719fb9f8f2b53ac09f60885 100644
--- a/experiment/meteo_france_data/scm_models_data/abstract_study.py
+++ b/experiment/meteo_france_data/scm_models_data/abstract_study.py
@@ -310,6 +310,7 @@ class AbstractStudy(object):
                         massif_name_to_hatch_boolean_list=None,
                         norm=None,
                         massif_name_to_marker_style=None,
+                        marker_style_to_label_name=None,
                         ticks_values_and_labels=None,
                         ):
         if ax is None:
@@ -402,7 +403,7 @@ class AbstractStudy(object):
 
         # Add legend for the marker
         if massif_name_to_marker_style is not None:
-            legend_elements = cls.get_legend_for_model_symbol(markersize=8)
+            legend_elements = cls.get_legend_for_model_symbol(marker_style_to_label_name, markersize=8)
             ax.legend(handles=legend_elements, bbox_to_anchor=(0.01, 0.03), loc='lower left')
             ax.annotate("Filled symbol = significant trend ", xy=(0.05, 0.015), xycoords='axes fraction', fontsize=7)
 
@@ -412,13 +413,11 @@ class AbstractStudy(object):
         return ax
 
     @classmethod
-    def get_legend_for_model_symbol(cls, markersize):
-        labels = ['\mathcal{M}_{\mu_1}', '\mathcal{M}_{\sigma_1}', '\mathcal{M}_{\mu_1, \sigma_1}']
-        markers = ["s", "^", "D"]
+    def get_legend_for_model_symbol(cls, marker_style_to_label_name, markersize):
         legend_elements = [
             Line2D([0], [0], marker=marker, color='w', label='${}$'.format(label),
                    markerfacecolor='w', markeredgecolor='k', markersize=markersize)
-            for label, marker in zip(labels, markers)
+            for marker, label in marker_style_to_label_name.items()
         ]
         return legend_elements
 
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
index ae0e53898ba7588b7177ab3063d96388d57deaea..52c60ce4e55feafb5f4023f0ab8eadddccb2a46d 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
@@ -1,16 +1,16 @@
 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
-from matplotlib.ticker import FormatStrFormatter, ScalarFormatter
+from matplotlib.ticker import ScalarFormatter
 from scipy.ndimage import gaussian_filter
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.abstract_hypercube_visualizer import \
     AbstractHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    SCM_STUDY_NAME_TO_COLOR, SCM_STUDY_NAME_TO_ABBREVIATION, SCM_STUDY_CLASS_TO_ABBREVIATION, SCM_STUDIES_NAMES
+    SCM_STUDY_NAME_TO_COLOR, SCM_STUDY_NAME_TO_ABBREVIATION, SCM_STUDY_CLASS_TO_ABBREVIATION
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
 from root_utils import get_display_name_from_object_type
 
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
index 77152f090a091159986014ac121a48694581c5cd..bd461db47012ab2142b0147e853e20e732674e6f 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
@@ -1,18 +1,13 @@
 import time
 
 from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
-    AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer_extended import \
-    AltitudeHypercubeVisualizerBisExtended, QuantityHypercubeWithoutTrendExtended, \
-    AltitudeHypercubeVisualizerWithoutTrendExtended, QuantityHypercubeWithoutTrend
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
-    QuantityAltitudeHypercubeVisualizer
+    AltitudeHypercubeVisualizerBisExtended, QuantityHypercubeWithoutTrend
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+    SCM_STUDIES
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_fast_parameters(altitude=1800):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
index 086e668bbcbe22053e9937e232abc6c72c37f854..d29f20a20128453559ecd5f71e822dd59050c2cd 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
@@ -6,7 +6,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_fast_parameters(altitude=None):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
index 21311fc226b259ed6063df1202555e875a49bbd5..4fb4fbdd85e376be1b5f971fb2bcb15bd34c72b7 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
@@ -6,7 +6,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_full_parameters(altitude=None, offset_starting_year=10):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
index c3bfd1ec9cca5db94288bbada639c67abb38acec..3fbb7e9d8fa6b2b8c712c63c064daab4d0b1165f 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
@@ -1,6 +1,6 @@
 import time
 from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore, MeanScore, MedianScore
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import GevLocationChangePointTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import MannKendallTrendTest
 from experiment.meteo_france_data.scm_models_data.safran.safran import ExtendedSafranTotalPrecip
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
index bc8a70583a36fab8274021a2c5450be36cc63781..1b9e076e8a86f1b36f6ec7c4381f4cb684dc8992 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
@@ -18,7 +18,8 @@ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSno
 
 from collections import OrderedDict
 
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
     BetweenZeroAndOneNormalization, BetweenMinusOneAndOneNormalization
 from root_utils import get_display_name_from_object_type
diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison.py b/experiment/meteo_france_data/stations_data/main_station_comparison.py
index 46076629cff0bad018fc3fd9bdc411659a5da916..fa5cf0d0a2ded453510dee0674aeb95cd8b241d6 100644
--- a/experiment/meteo_france_data/stations_data/main_station_comparison.py
+++ b/experiment/meteo_france_data/stations_data/main_station_comparison.py
@@ -2,7 +2,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     ALL_ALTITUDES_WITH_20_STATIONS_AT_LEAST
 from experiment.meteo_france_data.stations_data.visualization.comparisons_visualization.comparisons_visualization import \
     ComparisonsVisualization, path_backup_csv_file
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import GevLocationChangePointTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 
 
diff --git a/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py b/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py
index 78f9ba369cf70ab5f6e2728b3b26fd124fdb7fa6..1f0b6ae185221451fb31560633790effa2b0c175 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py	
@@ -2,9 +2,9 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py
index a6f8594c1251e3ca862c7d28eb460076ce3682d5..20571443bfa4255a73e707583beed270b962ddae 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py
index 46636df97ac38e10dce5dd3cdfe66ea4dc00198d..ef62be2facefbb67ae021328f2c7997c9d5b1597 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py
index 1d9bcaa1d1e036e9ea77f4052deb84015560f868..8f952b0cea1d70939763892cad93bfbba806c0da 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py b/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
index 530c55f3b7a6582056a9af8382a5481680016edb..7670f92b769f8be1328078478a7f5ac6a91423ba 100644
--- a/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
+++ b/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
@@ -1,12 +1,11 @@
-from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSweTotal, CrocusSwe3Days
-from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSwe3Days
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from experiment.paper1_old.utils import get_full_altitude_visualizer
 
 POSTER_ALTITUDES = [900, 1800, 2700]
diff --git a/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py b/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
index 0fc0501f9343a1897841d77d6a723a16fb7a6a86..02d5f8ca81322a752e365f1666c6d515a1b4dc90 100644
--- a/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
+++ b/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
@@ -1,14 +1,10 @@
-from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSweTotal, CrocusSwe3Days
-from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
-    Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    SCM_STUDIES
-from experiment.trend_analysis.univariate_test.abstract_comparison_non_stationary_model import ComparisonAgainstMu, \
+    Altitude_Hypercube_Year_Visualizer
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.abstract_comparison_non_stationary_model import ComparisonAgainstMu, \
     ComparisonAgainstSigma
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from experiment.paper1_old.utils import get_full_altitude_visualizer
 
 POSTER_ALTITUDES = [900, 1800, 2700]
diff --git a/experiment/paper1_old/utils.py b/experiment/paper1_old/utils.py
index 0634dbf539abc272f2ac33cda11ba0570ebac122..55caf1fee2060ab9f5a45bb8d183e00ac818e96b 100644
--- a/experiment/paper1_old/utils.py
+++ b/experiment/paper1_old/utils.py
@@ -3,7 +3,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     get_full_parameters
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
     load_altitude_visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 FULL_ALTITUDES = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000]
 
diff --git a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
index 269885571a49918a02704efa0d02205e752b885d..953661f262c8e10a8d3352cceac547c0d8841bbb 100644
--- a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
+++ b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
@@ -1,6 +1,6 @@
 from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal
 from experiment.paper_past_snow_loads.check_mle_convergence_for_trends.study_visualizer_for_shape_repartition import \
-    StudyVisualizerForShape, StudyVisualizerGumbel
+    StudyVisualizerForShape, StudyVisualizerGumbel, StudyVisualizerAll
 from experiment.paper_past_snow_loads.paper_main_utils import load_altitude_to_visualizer
 
 
@@ -20,11 +20,14 @@ def main_shape_repartition(altitudes, massif_names=None,
     max_abs_tdrl = max([visualizer.max_abs_change for visualizer in visualizers_for_altitudes])
     for visualizer in visualizers_for_altitudes:
         # visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude == 2700)
-        visualizer.plot_trends(max_abs_tdrl, add_colorbar=True)
+        # visualizer.plot_trends(max_abs_tdrl, add_colorbar=True)
+        visualizer.plot_trends()
 
 
 if __name__ == '__main__':
     # main_shape_repartition([900], save_to_file=False)
     # main_shape_repartition([900, 1800, 2700])
     # main_shape_repartition([300, 600, 900, 1200, 1500, 1800, 2700])
-    main_shape_repartition([900], study_visualizer_class=StudyVisualizerGumbel)
+    main_shape_repartition([900], study_visualizer_class=StudyVisualizerAll, save_to_file=False)
+    # main_shape_repartition([300, 600, 900, 1200, 1500, 1800, 2100, 2400, 2700, 3000, 3300, 3600, 3900, 4200],
+    #                        study_visualizer_class=StudyVisualizerAll, save_to_file=True)
diff --git a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
index d7b62f8e46f9239d8d635c8dd985fc6967889d6d..9368d8ef278552191bdcc32db425bb9b1ef45422 100644
--- a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
+++ b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
@@ -1,10 +1,12 @@
+import matplotlib
 from cached_property import cached_property
 
+from experiment.meteo_france_data.plot.create_shifted_cmap import get_shifted_map
 from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
 from experiment.paper_past_snow_loads.study_visualizer_for_non_stationary_trends import \
     StudyVisualizerForNonStationaryTrends
 from experiment.trend_analysis.abstract_score import MeanScore
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import \
     GevStationaryVersusGumbel
 
 
@@ -41,8 +43,12 @@ class StudyVisualizerForShape(StudyVisualizerForNonStationaryTrends):
     def graduation(self):
         return 0.1
 
+    @cached_property
+    def cmap(self):
+        return get_shifted_map(-self._max_abs_change, self._max_abs_change, matplotlib.cm.get_cmap('BrBG_r'))
+
 
-class StudyVisualizerGumbel(StudyVisualizerForNonStationaryTrends):
+class StudyVisualizerGumbel(StudyVisualizerForShape):
 
     def __init__(self, study: AbstractStudy, show=True, save_to_file=False, only_one_graph=False, only_first_row=False,
                  vertical_kde_plot=False, year_for_kde_plot=None, plot_block_maxima_quantiles=False,
@@ -59,3 +65,19 @@ class StudyVisualizerGumbel(StudyVisualizerForNonStationaryTrends):
         # Assign default argument for the non stationary trends
         self.non_stationary_trend_test = [GevStationaryVersusGumbel]
         self.non_stationary_trend_test_to_marker = dict(zip(self.non_stationary_trend_test, ["o"]))
+
+
+class StudyVisualizerAll(StudyVisualizerForShape):
+
+    def __init__(self, study: AbstractStudy, show=True, save_to_file=False, only_one_graph=False, only_first_row=False,
+                 vertical_kde_plot=False, year_for_kde_plot=None, plot_block_maxima_quantiles=False,
+                 temporal_non_stationarity=False, transformation_class=None, verbose=False, multiprocessing=False,
+                 complete_non_stationary_trend_analysis=False, normalization_under_one_observations=True,
+                 score_class=MeanScore, uncertainty_methods=None, non_stationary_contexts=None,
+                 uncertainty_massif_names=None, effective_temporal_covariate=2017, relative_change_trend_plot=True):
+        super().__init__(study, show, save_to_file, only_one_graph, only_first_row, vertical_kde_plot,
+                         year_for_kde_plot, plot_block_maxima_quantiles, temporal_non_stationarity,
+                         transformation_class, verbose, multiprocessing, complete_non_stationary_trend_analysis,
+                         normalization_under_one_observations, score_class, uncertainty_methods,
+                         non_stationary_contexts, uncertainty_massif_names, effective_temporal_covariate,
+                         relative_change_trend_plot)
diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
index 65332ae34f5f90351ce69dad7c3d8a141af41c0f..1ee9c7bb673c17648933fa7df935d865b5e8f446 100644
--- a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
+++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
@@ -19,6 +19,7 @@ mpl.rcParams['text.usetex'] = True
 mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}']
 import matplotlib.pyplot as plt
 
+
 def minor_result(altitude):
     """Plot trends for a single altitude to be fast"""
     visualizer = StudyVisualizerForNonStationaryTrends(CrocusSnowLoadTotal(altitude=altitude), multiprocessing=True,
@@ -26,10 +27,12 @@ def minor_result(altitude):
     visualizer.plot_trends()
     plt.show()
 
+
 def compute_minimized_aic(visualizer):
     _ = visualizer.massif_name_to_minimized_aic_non_stationary_trend_test
     return True
 
+
 def intermediate_result(altitudes, massif_names=None,
                         non_stationary_uncertainty=None, uncertainty_methods=None,
                         study_class=CrocusSnowLoadTotal,
@@ -65,7 +68,7 @@ def intermediate_result(altitudes, massif_names=None,
                                  if altitude in altitudes_for_plot_trend]
     max_abs_tdrl = max([visualizer.max_abs_change for visualizer in visualizers_for_altitudes])
     for visualizer in visualizers_for_altitudes:
-        visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude==2700)
+        visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude == 2700)
 
     # Plot graph
     plot_uncertainty_massifs(altitude_to_visualizer)
@@ -92,15 +95,15 @@ if __name__ == '__main__':
     #                        ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
     #                     non_stationary_uncertainty=[False, True][1:],
     #                     multiprocessing=True)
-    intermediate_result(altitudes=paper_altitudes, massif_names=['Maurienne'],
-                        uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
-                           ConfidenceIntervalMethodFromExtremes.ci_mle][:],
-                        non_stationary_uncertainty=[False, True][:],
-                        multiprocessing=True)
+    # intermediate_result(altitudes=paper_altitudes, massif_names=['Maurienne'],
+    #                     uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
+    #                                          ConfidenceIntervalMethodFromExtremes.ci_mle][:],
+    #                     non_stationary_uncertainty=[False, True][:],
+    #                     multiprocessing=True)
     # intermediate_result(altitudes=[900, 1200], massif_names=None)
     # intermediate_result(ALL_ALTITUDES_WITHOUT_NAN)
     # intermediate_result(paper_altitudes)
-    # minor_result(altitude=900)
+    minor_result(altitude=900)
     # intermediate_result(altitudes=[1500, 1800], massif_names=['Chartreuse'],
     #                     uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle,
     #                                          ConfidenceIntervalMethodFromExtremes.ci_bayes],
diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
index d1da622ff079626d5907892b5f06bdceba3af79f..8c0ac530463856bde162a0e1c42aa24845ea9715 100644
--- a/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
+++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
@@ -152,7 +152,8 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg
             # Better to plot all the markers on the same line
             ax.plot([altitude], 0, **marker_kwargs)
     # Add a legend plot
-    legend_elements = AbstractStudy.get_legend_for_model_symbol(markersize=9)
+    visualizer = visualizers[0]
+    legend_elements = AbstractStudy.get_legend_for_model_symbol(visualizer.marker_to_label, markersize=9)
     ax2 = ax.twinx()
     # ax2.legend(handles=legend_elements, bbox_to_anchor=(0.93, 0.7), loc='upper right')
     # ax2.annotate("Filled symbol = significant trend ", xy=(0.85, 0.5), xycoords='axes fraction', fontsize=7)
diff --git a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
index 976efe49d3fd662b8d9186d40c59d3dd804c1ec1..ba766f4c09e1fa1270b048e442e58935e9edde49 100644
--- a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
+++ b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
@@ -1,7 +1,6 @@
-from collections import OrderedDict
 import matplotlib.pyplot as plt
 from multiprocessing.pool import Pool
-from typing import Dict, Tuple
+from typing import Dict
 
 import numpy as np
 from cached_property import cached_property
@@ -14,12 +13,18 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     StudyVisualizer
 from experiment.paper_past_snow_loads.check_mcmc_convergence_for_return_levels.gelman_convergence_test import \
     compute_gelman_convergence_value
-from experiment.paper_past_snow_loads.paper_utils import dpi_paper1_figure
 from experiment.trend_analysis.abstract_score import MeanScore
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest, GevScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter import \
+    GumbelLocationTrendTest, GevStationaryVersusGumbel, GumbelScaleTrendTest, GumbelVersusGumbel
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_three_parameters.gumbel_trend_test_three_parameters import \
+    GevLocationAndScaleTrendTestAgainstGumbel
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gumbel_test_two_parameters import \
+    GumbelLocationAndScaleTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
 from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \
     ConfidenceIntervalMethodFromExtremes
@@ -39,12 +44,14 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                  non_stationary_contexts=None,
                  uncertainty_massif_names=None,
                  effective_temporal_covariate=2017,
-                 relative_change_trend_plot=True):
+                 relative_change_trend_plot=True,
+                 non_stationary_trend_test_to_marker=None):
         super().__init__(study, show, save_to_file, only_one_graph, only_first_row, vertical_kde_plot,
                          year_for_kde_plot, plot_block_maxima_quantiles, temporal_non_stationarity,
                          transformation_class, verbose, multiprocessing, complete_non_stationary_trend_analysis,
                          normalization_under_one_observations, score_class)
         # Add some attributes
+        self.non_stationary_trend_test_to_marker = non_stationary_trend_test_to_marker
         self.relative_change_trend_plot = relative_change_trend_plot
         self.effective_temporal_covariate = effective_temporal_covariate
         self.non_stationary_contexts = non_stationary_contexts
@@ -58,10 +65,19 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                                         ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
         if self.uncertainty_massif_names is None:
             self.uncertainty_massif_names = self.study.study_massif_names
-        # Assign default argument for the non stationary trends
-        self.non_stationary_trend_test = [GevLocationTrendTest, GevScaleTrendTest, GevLocationAndScaleTrendTest]
-        self.non_stationary_trend_test_to_marker = dict(zip(self.non_stationary_trend_test, ["s", "^", "D"]))
-
+        if self.non_stationary_trend_test_to_marker is None:
+            # Assign default argument for the non stationary trends
+            # self.non_stationary_trend_test = [GumbelVersusGumbel,
+            #                                   GumbelLocationTrendTest, GumbelScaleTrendTest, GumbelLocationAndScaleTrendTest,
+            #                                   GevStationaryVersusGumbel,
+            #                                   GevLocationTrendTest, GevScaleTrendTest, GevLocationAndScaleTrendTest,
+            #                                   ]
+            self.non_stationary_trend_test = [GumbelVersusGumbel, GevLocationAndScaleTrendTestAgainstGumbel]
+            self.non_stationary_trend_test_to_marker = {t: t.marker for t in self.non_stationary_trend_test}
+                                                                # ["v", "^", "D", "X", "x", 7, 6, "d"]))
+        else:
+            self.non_stationary_trend_test = list(self.non_stationary_trend_test_to_marker.keys())
+        self.marker_to_label = {t.marker: t.label for t in self.non_stationary_trend_test}
         self.global_max_abs_change = None
 
     # Utils
@@ -125,6 +141,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                                         axis_off=False, show_label=False,
                                         add_colorbar=add_colorbar,
                                         massif_name_to_marker_style=self.massif_name_to_marker_style,
+                                        marker_style_to_label_name=self.marker_to_label,
                                         massif_name_to_color=self.massif_name_to_color,
                                         cmap=self.cmap,
                                         show=False,
diff --git a/experiment/trend_analysis/univariate_test/abstract_trend_test.py b/experiment/trend_analysis/univariate_test/abstract_trend_test.py
deleted file mode 100644
index 9304b779d4a9641cef1c7933c7489bc43f2cef63..0000000000000000000000000000000000000000
--- a/experiment/trend_analysis/univariate_test/abstract_trend_test.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import warnings
-
-import numpy as np
-
-from experiment.trend_analysis.univariate_test.mann_kendall_test import mann_kendall_test
-from experiment.trend_analysis.abstract_score import MannKendall
-from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
-
-
-class MannKendallTrendTest(AbstractUnivariateTest):
-
-    def __init__(self, years, maxima, starting_year):
-        super().__init__(years, maxima, starting_year)
-        score = MannKendall()
-        # Compute score value
-        detailed_score = score.get_detailed_score(self.years_after_starting_year, self.maxima_after_starting_year)
-        self.score_value = detailed_score[0]
-        # Compute the Mann Kendall Test
-        MK, S = mann_kendall_test(t=self.years_after_starting_year,
-                                  x=self.maxima_after_starting_year,
-                                  eps=1e-5,
-                                  alpha=self.SIGNIFICANCE_LEVEL,
-                                  Ha='upordown')
-        # Raise warning if scores are differents
-        if S != self.score_value:
-            warnings.warn('S={} is different that score_value={}'.format(S, self.score_value), WarningScoreValue)
-        self.MK = MK
-
-    @property
-    def test_sign(self) -> int:
-        return np.sign(self.score_value)
-
-    @property
-    def is_significant(self) -> bool:
-        assert 'reject' in self.MK or 'accept' in self.MK
-        return 'accept' in self.MK
-
-
-class SpearmanRhoTrendTest(AbstractUnivariateTest):
-    pass
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
similarity index 97%
rename from experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
index 8d3b47b0ee9f1124bb9d67c3adfbb628cab007cd..907716d99222397508a4ce5312029dae7a3234ff 100644
--- a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
@@ -14,6 +14,7 @@ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_m
     StationaryTemporalModel
 from extreme_fit.model.utils import SafeRunException
 from extreme_fit.distribution.gev.gev_params import GevParams
+from root_utils import classproperty
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 
 
@@ -193,3 +194,13 @@ class AbstractGevTrendTest(AbstractUnivariateTest):
             return 0.0
         else:
             return self.unconstrained_estimator_gev_params.quantile(p=self.quantile_level)
+
+    # Some class properties for display purpose
+
+    @classproperty
+    def marker(self):
+        raise NotImplementedError
+
+    @classproperty
+    def label(self):
+        return '\\mathcal{M}_{%s}'
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
similarity index 69%
rename from experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
index cfd2dc5e2496a27ac0dd2c96ba912d1790dcb0a1..ee92cf5e080b0d6ab9ee018913bf6e645c6ddb91 100644
--- a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
@@ -1,23 +1,14 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevTrendTestOneParameter
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
     NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel
 import numpy as np
 
 
-class AbstractComparisonNonStationaryModel(AbstractGevTrendTest):
-
-    @property
-    def degree_freedom_chi2(self) -> int:
-        raise NotImplementedError
-
-
-class AbstractComparisonNonStationaryModelOneParameter(AbstractComparisonNonStationaryModel):
-
-    @property
-    def degree_freedom_chi2(self) -> int:
-        return 1
+class AbstractComparisonNonStationaryModelOneParameter(GevTrendTestOneParameter):
 
     @property
     def test_sign(self) -> int:
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
similarity index 87%
rename from experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
index 5a89e207965f2aaee22ef922e00188d9a57c2e84..d09c5a3bd7cb18ccb900eadf276dfa2cdfc60b7b 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
@@ -1,8 +1,8 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
     NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel, \
-    StationaryTemporalModel, GumbelTemporalModel
+    StationaryTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -86,10 +86,3 @@ class GevShapeTrendTest(GevTrendTestOneParameterAgainstStationary):
                          quantile_level=quantile_level)
 
 
-class GevStationaryVersusGumbel(GevTrendTestOneParameter):
-
-    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
-        super().__init__(years, maxima, starting_year,
-                         unconstrained_model_class=StationaryTemporalModel,
-                         constrained_model_class=GumbelTemporalModel,
-                         quantile_level=quantile_level)
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py
new file mode 100644
index 0000000000000000000000000000000000000000..71df50439809d1ebc789bfed81ff5be6af96c83d
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py
@@ -0,0 +1,92 @@
+# Comparison with the Gumbel model
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevTrendTestOneParameter, GevTrendTestOneParameterAgainstStationary
+from extreme_fit.distribution.gev.gev_params import GevParams
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+    GumbelTemporalModel, NonStationaryLocationGumbelModel, NonStationaryScaleGumbelModel
+from root_utils import classproperty
+
+
+class GumbelVersusGumbel(GevTrendTestOneParameter):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=GumbelTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def is_significant(self) -> bool:
+        return False
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 2
+
+    @property
+    def time_derivative_of_return_level(self):
+        return super().time_derivative_of_return_level()
+
+    @classproperty
+    def label(self):
+        return super().label % '0'
+
+    @classproperty
+    def marker(self):
+        return 'x'
+
+    def _slope_strength(self):
+        return 0.0
+
+
+class GevStationaryVersusGumbel(GevTrendTestOneParameter):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=StationaryTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
+
+    def _slope_strength(self):
+        return 0.0
+
+class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationGumbelModel,
+                         gev_param_name=GevParams.LOC,
+                         quantile_level=quantile_level,
+                         constrained_model_class=GumbelTemporalModel)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.non_stationary_linear_coef)
+
+
+class GumbelScaleTrendTest(GevTrendTestOneParameterAgainstStationary):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryScaleGumbelModel,
+                         gev_param_name=GevParams.SCALE,
+                         quantile_level=quantile_level,
+                         constrained_model_class=GumbelTemporalModel)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(
+            p=self.quantile_level,
+            sigma1=self.non_stationary_linear_coef)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py
new file mode 100644
index 0000000000000000000000000000000000000000..b5f6cbccb05e878a30af1626ca9957f9c668c4cc
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py
@@ -0,0 +1,48 @@
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevLocationAndScaleTrendTest
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
+    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \
+    GumbelTemporalModel
+from extreme_fit.distribution.gev.gev_params import GevParams
+from root_utils import classproperty
+
+
+class GevTrendTestThreeParameters(AbstractGevTrendTest):
+
+    @property
+    def degree_freedom_chi2(self) -> int:
+        return 3
+
+
+class GevLocationAndScaleTrendTestAgainstGumbel(GevTrendTestThreeParameters):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def mu1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.LOC)
+
+    @property
+    def sigma1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.SCALE)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.mu1,
+                                                                                       sigma1=self.sigma1)
+
+    @classproperty
+    def label(self):
+        return super().label % '\\zeta_0, \\mu_1, \\sigma_1'
+
+    @classproperty
+    def marker(self):
+        return 'd'
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
similarity index 90%
rename from experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
index 2bd8a106a4ff125fd09735104797e159c6f5bfe1..89cd18b3934073de5820832f2cf0079cd93ef255 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
@@ -1,7 +1,8 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel
+    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \
+    GumbelTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -42,3 +43,5 @@ class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters):
     @property
     def variance_difference_same_sign_as_slope_strenght(self) -> bool:
         return self.same_sign(self.sigma1, self._slope_strength())
+
+
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea7648ac5f5fb38a65bb98f9bd37acd9f1e6e8f2
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py
@@ -0,0 +1,32 @@
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevTrendTestTwoParameters
+from extreme_fit.distribution.gev.gev_params import GevParams
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
+    NonStationaryLocationAndScaleGumbelModel, GumbelTemporalModel
+
+
+class GumbelLocationAndScaleTrendTest(GevTrendTestTwoParameters):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationAndScaleGumbelModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 4
+
+    @property
+    def mu1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.LOC)
+
+    @property
+    def sigma1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.SCALE)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.mu1,
+                                                                                       sigma1=self.sigma1)
diff --git a/experiment/trend_analysis/univariate_test/mann_kendall_test.py b/experiment/trend_analysis/univariate_test/mann_kendall_test.py
deleted file mode 100644
index 8402791d2e8c6b4fd2bae4a6132e76ceaac4bb76..0000000000000000000000000000000000000000
--- a/experiment/trend_analysis/univariate_test/mann_kendall_test.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# Created: Mon Apr 17, 2017  01:18PM
-# Last modified: Mon Apr 17, 2017  09:24PM
-# Copyright: Bedartha Goswami <goswami@uni-potsdam.de>
-
-# This code was adapted from: https://up-rs-esp.github.io/mkt/
-
-import numpy as np
-from scipy.special import ndtri, ndtr
-import sys
-
-
-def mann_kendall_test(t, x, eps=None, alpha=None, Ha=None):
-    """
-    Runs the Mann-Kendall test for trend in time series data.
-
-    Parameters
-    ----------
-    t : 1D numpy.ndarray
-        array of the time points of measurements
-    x : 1D numpy.ndarray
-        array containing the measurements corresponding to entries of 't'
-    eps : scalar, float, greater than zero
-        least count error of measurements which help determine ties in the data
-    alpha : scalar, float, greater than zero
-        significance level of the statistical test (Type I error)
-    Ha : string, options include 'up', 'down', 'upordown'
-        type of test: one-sided ('up' or 'down') or two-sided ('updown')
-
-    Returns
-    -------
-    MK : string
-        result of the statistical test indicating whether or not to accept hte
-        alternative hypothesis 'Ha'
-    m : scalar, float
-        slope of the linear fit to the data
-    c : scalar, float
-        intercept of the linear fit to the data
-    p : scalar, float, greater than zero
-        p-value of the obtained Z-score statistic for the Mann-Kendall test
-
-    Raises
-    ------
-    AssertionError : error
-                    least count error of measurements 'eps' is not given
-    AssertionError : error
-                    significance level of test 'alpha' is not given
-    AssertionError : error
-                    alternative hypothesis 'Ha' is not given
-
-    """
-    # assert a least count for the measurements x
-    assert eps, "Please provide least count error for measurements 'x'"
-    assert alpha, "Please provide significance level 'alpha' for the test"
-    assert Ha, "Please provide the alternative hypothesis 'Ha'"
-
-    # estimate sign of all possible (n(n-1)) / 2 differences
-    n = len(t)
-    sgn = np.zeros((n, n), dtype="int")
-    for i in range(n):
-        tmp = x - x[i]
-        tmp[np.where(np.fabs(tmp) <= eps)] = 0.
-        sgn[i] = np.sign(tmp)
-
-    # estimate mean of the sign of all possible differences
-    S = sgn[np.triu_indices(n, k=1)].sum()
-
-    # estimate variance of the sign of all possible differences
-    # 1. Determine no. of tie groups 'p' and no. of ties in each group 'q'
-    np.fill_diagonal(sgn, eps * 1E6)
-    i, j = np.where(sgn == 0.)
-    ties = np.unique(x[i])
-    p = len(ties)
-    q = np.zeros(len(ties), dtype="int")
-    for k in range(p):
-        idx = np.where(np.fabs(x - ties[k]) < eps)[0]
-        q[k] = len(idx)
-    # 2. Determine the two terms in the variance calculation
-    term1 = n * (n - 1) * (2 * n + 5)
-    term2 = (q * (q - 1) * (2 * q + 5)).sum()
-    # 3. estimate variance
-    varS = float(term1 - term2) / 18.
-
-    # Compute the Z-score based on above estimated mean and variance
-    if S > eps:
-        Zmk = (S - 1) / np.sqrt(varS)
-    elif np.fabs(S) <= eps:
-        Zmk = 0.
-    elif S < -eps:
-        Zmk = (S + 1) / np.sqrt(varS)
-
-    # compute test based on given 'alpha' and alternative hypothesis
-    # note: for all the following cases, the null hypothesis Ho is:
-    # Ho := there is no monotonic trend
-    #
-    # Ha := There is an upward monotonic trend
-    if Ha == "up":
-        Z_ = ndtri(1. - alpha)
-        if Zmk >= Z_:
-            MK = "accept Ha := upward trend"
-        else:
-            MK = "reject Ha := upward trend"
-    # Ha := There is a downward monotonic trend
-    elif Ha == "down":
-        Z_ = ndtri(1. - alpha)
-        if Zmk <= -Z_:
-            MK = "accept Ha := downward trend"
-        else:
-            MK = "reject Ha := downward trend"
-    # Ha := There is an upward OR downward monotonic trend
-    elif Ha == "upordown":
-        Z_ = ndtri(1. - alpha / 2.)
-        if np.fabs(Zmk) >= Z_:
-            MK = "accept Ha := upward OR downward trend"
-        else:
-            MK = "reject Ha := upward OR downward trend"
-
-    # ----------
-    # AS A BONUS
-    # ----------
-    # # estimate the slope and intercept of the line
-    # m = np.corrcoef(t, x)[0, 1] * (np.std(x) / np.std(t))
-    # c = np.mean(x) - m * np.mean(t)
-    #
-    #
-    # # ----------
-    # # AS A BONUS
-    # # ----------
-    # # estimate the p-value for the obtained Z-score Zmk
-    # if S > eps:
-    #     if Ha == "up":
-    #         p = 1. - ndtr(Zmk)
-    #     elif Ha == "down":
-    #         p = ndtr(Zmk)
-    #     elif Ha == "upordown":
-    #         p = 0.5 * (1. - ndtr(Zmk))
-    # elif np.fabs(S) <= eps:
-    #     p = 0.5
-    # elif S < -eps:
-    #     if Ha == "up":
-    #         p = 1. - ndtr(Zmk)
-    #     elif Ha == "down":
-    #         p = ndtr(Zmk)
-    #     elif Ha == "upordown":
-    #         p = 0.5 * (ndtr(Zmk))
-
-    return MK, S
diff --git a/experiment/trend_analysis/univariate_test/univariate_test_results.py b/experiment/trend_analysis/univariate_test/univariate_test_results.py
index 009da7831c00d58c669170367f945bd7663ce383..a319c72e37b201c5b26d247029ad8cc066f567a8 100644
--- a/experiment/trend_analysis/univariate_test/univariate_test_results.py
+++ b/experiment/trend_analysis/univariate_test/univariate_test_results.py
@@ -2,9 +2,9 @@ from multiprocessing.pool import Pool
 
 import numpy as np
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
-    AbstractTemporalLinearMarginModel, TemporalMarginFitMethod
+    TemporalMarginFitMethod
 from root_utils import NB_CORES
 
 
diff --git a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
index e6a54751d2b670a546f2bf8cc1216af6a129cfef..23be15751f9048bd74497c626c4c7fd3abc5b638 100644
--- a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
+++ b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
@@ -11,15 +11,6 @@ class StationaryTemporalModel(AbstractTemporalLinearMarginModel):
         super().load_margin_functions({})
 
 
-class GumbelTemporalModel(StationaryTemporalModel):
-
-    def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None,
-                 params_sample=None, starting_point=None, fit_method=TemporalMarginFitMethod.is_mev_gev_fit,
-                 nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None):
-        super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, fit_method,
-                         nb_iterations_for_bayesian_fit, params_start_fit_bayesian, type_for_MLE="Gumbel")
-
-
 class NonStationaryLocationTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
@@ -73,3 +64,22 @@ class NonStationaryLocationAndScaleTemporalModel(AbstractTemporalLinearMarginMod
     @property
     def sigl(self):
         return 1
+
+
+class GumbelTemporalModel(StationaryTemporalModel):
+
+    def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None,
+                 params_sample=None, starting_point=None, fit_method=TemporalMarginFitMethod.is_mev_gev_fit,
+                 nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None):
+        super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, fit_method,
+                         nb_iterations_for_bayesian_fit, params_start_fit_bayesian, type_for_MLE="Gumbel")
+
+
+class NonStationaryLocationGumbelModel(GumbelTemporalModel, NonStationaryLocationTemporalModel):
+    pass
+
+class NonStationaryScaleGumbelModel(GumbelTemporalModel, NonStationaryScaleTemporalModel):
+    pass
+
+class NonStationaryLocationAndScaleGumbelModel(GumbelTemporalModel, NonStationaryLocationAndScaleTemporalModel):
+    pass
\ No newline at end of file
diff --git a/extreme_fit/model/result_from_model_fit/utils.py b/extreme_fit/model/result_from_model_fit/utils.py
index 03d95a07f6a37dc3c32ba63cbe75ad798258a6b0..d98b6b5375c65b4454bf084860b173917477333e 100644
--- a/extreme_fit/model/result_from_model_fit/utils.py
+++ b/extreme_fit/model/result_from_model_fit/utils.py
@@ -19,7 +19,7 @@ def get_margin_coef_ordered_dict(gev_param_name_to_dim, mle_values, type_for_mle
     for gev_param_name in GevParams.PARAM_NAMES:
         # Add intercept (i.e. stationary parameter)
         intercept_coef_name = LinearCoef.coef_template_str(gev_param_name, LinearCoef.INTERCEPT_NAME).format(1)
-        if type_for_mle == "Gumbel" and i == 2:
+        if type_for_mle == "Gumbel" and gev_param_name == GevParams.SHAPE:
             coef_value = 0
         else:
             coef_value = mle_values[i]
diff --git a/test/test_experiment/test_SCM_study.py b/test/test_experiment/test_SCM_study.py
index 7a0aa485325cb3420c07c24b6ccdc57bdbadc31f..542cb35e979016f603804ad016288aa512efd5b6 100644
--- a/test/test_experiment/test_SCM_study.py
+++ b/test/test_experiment/test_SCM_study.py
@@ -12,7 +12,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     study_iterator, study_iterator_global, SCM_STUDIES, ALL_ALTITUDES
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from root_utils import get_display_name_from_object_type
 
 
diff --git a/test/test_experiment/test_hypercube.py b/test/test_experiment/test_hypercube.py
index ad3b15e63ad7e712445f473800acdf2032540047..80446d443f02fb818671d13305bda286aa26361e 100644
--- a/test/test_experiment/test_hypercube.py
+++ b/test/test_experiment/test_hypercube.py
@@ -4,15 +4,14 @@ from collections import OrderedDict
 import numpy as np
 
 from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
-    AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     study_iterator
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from extreme_fit.model.utils import set_seed_for_test
 
 
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
index 868521460f7a94c890694fbc4f9b5b8e77a892cc..ec0b6977c4e4667d9ac714534080fcf54c956218 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
@@ -3,7 +3,7 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
index 2996bb21bd55e6dd8518d43fb06e9b388a32672f..8aee8f21c4e6ba22e464b46b03dc19a4ddd34115 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
@@ -3,11 +3,10 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
-    NonStationaryLocationTemporalModel, NonStationaryLocationAndScaleTemporalModel, GumbelTemporalModel
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import GumbelTemporalModel
 from extreme_fit.model.utils import r, set_seed_r
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
index 0d420386f879e805c32d2de566462b366df78c3b..f1dc68ff26a85c86f0dc6fa947c7a565ed521a09 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
@@ -3,7 +3,7 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \