diff --git a/library/Class/Album.php b/library/Class/Album.php
index 18101ea7be1837be267b12efdc88e2f7fe5fc672..2ae4cd977334c8948145acde278f2b15093fd3f0 100644
--- a/library/Class/Album.php
+++ b/library/Class/Album.php
@@ -1292,10 +1292,7 @@ class Class_Album extends Storm_Model_Abstract {
   }
 
 
-  /**
-   * @return array
-   */
-  public function toArray() {
+  public function toArray() : array {
     $attributes = parent::toArray();
     return array_merge($attributes,
                        $this->getDefaultThumbnailValues(),
diff --git a/library/Class/AlbumRessource.php b/library/Class/AlbumRessource.php
index e1447c337f5c423b56517bbf4cfe9f33317820ab..cde2806e03039647cc801b2198de3bc6bd76e546 100644
--- a/library/Class/AlbumRessource.php
+++ b/library/Class/AlbumRessource.php
@@ -972,7 +972,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   }
 
 
-  public function toArray() {
+  public function toArray() : array {
     return parent::toArray() + ['media_type' => $this->getMediaType()];
   }
 
diff --git a/library/Class/Article.php b/library/Class/Article.php
index 98f9934c701438331fabc605f23aa8ae4abdaf6d..e42f89dfb38c1c22ce56b0f14a7169c130b65d87 100644
--- a/library/Class/Article.php
+++ b/library/Class/Article.php
@@ -967,7 +967,7 @@ class Class_Article extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $attributes) {
+  public function updateAttributes(array $attributes) : self {
     unset($attributes['id_items']);
 
     $date_iso = new Class_Date_Iso;
diff --git a/library/Class/Article/EventTiming.php b/library/Class/Article/EventTiming.php
index 2397876f0c3d240a7174e5a5fe29536240d2e878..a524fbcfbd90378256a64b755b5b5b875b285b3c 100644
--- a/library/Class/Article/EventTiming.php
+++ b/library/Class/Article/EventTiming.php
@@ -45,7 +45,7 @@ class Class_Article_EventTiming extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $attributes) {
+  public function updateAttributes(array $attributes) : self {
     $date_iso = new Class_Date_Iso;
     if (array_key_exists('start', $attributes))
       $attributes['start'] = $date_iso->ensureDateTime($attributes['start']);
diff --git a/library/Class/Article/Loader.php b/library/Class/Article/Loader.php
index 6c01d157b79ecde37d7774950eab157463e951f8..db423eeb6baf371f7d9879a79f95b6537ca92a9d 100644
--- a/library/Class/Article/Loader.php
+++ b/library/Class/Article/Loader.php
@@ -34,7 +34,7 @@ class Class_Article_Loader extends Storm_Model_Loader {
   protected $_all_articles, $_map_callback;
 
 
-  public function newFromRow($row) {
+  public function newFromRow(array $row) : Storm_Model_Interface {
     $row = array_change_key_case($row, CASE_LOWER);
     if (isset($row['start']) && isset($row['end'])) {
       $row['events_debut'] = $row['start'];
diff --git a/library/Class/Bib/PortalBorrowers.php b/library/Class/Bib/PortalBorrowers.php
index ad5ccc6611d8e7bd0238edc28914eb76eea88eb2..2d1c4672738565cbb4dddaa235c74d9e1ecfa593 100644
--- a/library/Class/Bib/PortalBorrowers.php
+++ b/library/Class/Bib/PortalBorrowers.php
@@ -115,7 +115,7 @@ class Class_Bib_PortalBorrowers {
 
 
   protected function _usersQuery() : Storm_Query {
-    return Storm_Query::from(Class_Users::class)
+    return Class_Users::query()
       ->eq('id_site', $this->getId())
       ->gt('idabon', '')
       ->gt('date_fin', '')
diff --git a/library/Class/CodifAuteur.php b/library/Class/CodifAuteur.php
index e8177f7e0d0c33cca477694c11606db43a194169..f842db610c62c411405218bd36a99b1b46c85583 100644
--- a/library/Class/CodifAuteur.php
+++ b/library/Class/CodifAuteur.php
@@ -92,7 +92,7 @@ class CodifAuteurLoader extends Storm_Model_Loader {
       return $this->_by_alpha_cache[$code_alpha];
 
     return $this->_by_alpha_cache[$code_alpha] =
-      Storm_Query::from(Class_CodifAuteur::class)
+      Class_CodifAuteur::query()
       ->match((new Storm_Query_MatchBoolean('formes'))
               ->against($code_alpha))
       ->fetchFirst();
@@ -119,7 +119,7 @@ class CodifAuteurLoader extends Storm_Model_Loader {
       return;
     }
 
-    $notice = Storm_Query::from(Class_Notice::class)
+    $notice = Class_Notice::query()
       ->match((new Storm_Query_MatchBoolean('facettes'))
               ->against('A' . $author->getId()))
       ->fetchFirst();
diff --git a/library/Class/CodifThesaurus.php b/library/Class/CodifThesaurus.php
index 45f96809b4cd074cc0bbe2e0fac9a8bb7451044d..c574b2d131df94b52556bace477aa609321791ec 100644
--- a/library/Class/CodifThesaurus.php
+++ b/library/Class/CodifThesaurus.php
@@ -60,7 +60,7 @@ class Class_CodifThesaurus extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $datas) {
+  public function updateAttributes(array $datas) : self {
     parent::updateAttributes($datas);
     $this->_getListRules()->clean();
     return $this;
diff --git a/library/Class/CodifThesaurus/Loader.php b/library/Class/CodifThesaurus/Loader.php
index 4fcc3ab444f7d2dddeef9376909dfe2a788c12a7..631414fc060654c92db8207f0af3bbdc9e55c62d 100644
--- a/library/Class/CodifThesaurus/Loader.php
+++ b/library/Class/CodifThesaurus/Loader.php
@@ -243,7 +243,7 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
   /** @return string */
   public function findNextThesaurusChildId($code, $parentid_thesaurus) {
     Class_CodifThesaurus::clearCache();
-    $last_thesaurus = Storm_Query::from(Class_CodifThesaurus::class)
+    $last_thesaurus = Class_CodifThesaurus::query()
       ->eq('code', $code)
       ->start('id_thesaurus', $parentid_thesaurus)
       ->order_desc('id_thesaurus')
@@ -415,7 +415,7 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
 
 
   public function findDomainFacets() : array {
-    return Storm_Query::from(Class_CodifThesaurus::class)
+    return Class_CodifThesaurus::query()
       ->eq('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)
       ->gt('rules', '')
       ->fetchAll();
diff --git a/library/Class/CustomField.php b/library/Class/CustomField.php
index 285ee2d54f501e217e1d05acc9f9ade3f568fb1a..4a67899447554fa800ab7ba8304447b0f2376777 100644
--- a/library/Class/CustomField.php
+++ b/library/Class/CustomField.php
@@ -138,7 +138,7 @@ class Class_CustomField extends Storm_Model_Abstract {
   }
 
 
-  public function toArray() {
+  public function toArray() : array {
     $from_meta = [];
     foreach($this->_forwarded_to_meta as $property) {
       $method = 'get' . $this->attributeNameToAccessor($property);
diff --git a/library/Class/Exemplaire/Shelf.php b/library/Class/Exemplaire/Shelf.php
index bcf6354dd02e187917fa9ee1d9691eeac841e672..bdab7f97cf994a2e8ed80018dcd97e4166667e3e 100644
--- a/library/Class/Exemplaire/Shelf.php
+++ b/library/Class/Exemplaire/Shelf.php
@@ -43,14 +43,14 @@ class Class_Exemplaire_Shelf {
 
   protected function _findBeforeItems() : array {
     return array_reverse($this
-                         ->_findItems(Storm_Query::from(Class_Exemplaire::class)
+                         ->_findItems(Class_Exemplaire::query()
                                       ->lt('shelf_key', $this->_item->getShelfKey())
                                       ->order_desc('shelf_key')));
   }
 
 
   protected function _findAfterItems() : array {
-    return $this->_findItems(Storm_Query::from(Class_Exemplaire::class)
+    return $this->_findItems(Class_Exemplaire::query()
                              ->gt('shelf_key', $this->_item->getShelfKey())
                              ->order('shelf_key'));
   }
diff --git a/library/Class/FileManager/Model.php b/library/Class/FileManager/Model.php
index cd09624a8465950ebe5d3088a2cebc7c4fcdc220..22659077dc8d21e4cee68de019942e4d699d4c38 100644
--- a/library/Class/FileManager/Model.php
+++ b/library/Class/FileManager/Model.php
@@ -189,7 +189,7 @@ class Class_FileManager_ModelRelationWidget {
 
   public function findAll(string $path) : array {
     $widgets = [];
-    foreach (Storm_Query::from(Class_Profil::class)
+    foreach (Class_Profil::query()
              ->not_is_null('template')
              ->fetchAll() as $profile)
       $widgets = $this->_getWidgetsWithImage($path, $profile, $widgets);
diff --git a/library/Class/Matiere.php b/library/Class/Matiere.php
index 88193679acf363d4fb590ef1213d2b56fe53cb2c..6849c391ea9b55103d5f79d60a4c0c507420eb1d 100644
--- a/library/Class/Matiere.php
+++ b/library/Class/Matiere.php
@@ -21,6 +21,7 @@
 
 
 class Class_MatiereLoader extends Storm_Model_Loader {
+
   public function getListeSuggestion($value, $mode, $limit)  {
     return (new Class_CodifSuggest(Class_Matiere::getLoader()))->suggest($value, $mode, $limit);
   }
@@ -30,17 +31,17 @@ class Class_MatiereLoader extends Storm_Model_Loader {
 
 
 class Class_Matiere extends Storm_Model_Abstract {
+
   protected $_table_name = 'codif_matiere';
   protected $_table_primary = 'id_matiere';
   protected $_loader_class = 'Class_MatiereLoader';
-
   protected $_default_attribute_values = ['libelle' => ''];
 
   public function getSousVedettes() {
     $vedette = $this->getLibelle();
-    $children = Storm_Query::from(Class_Matiere::class)
-      ->start('libelle', $vedette . ' : ')
-      ->fetchAll();
+    $children = $this->getLoader()->query()
+                     ->start('libelle', $vedette . ' : ')
+                     ->fetchAll();
 
     if (0 == count($children))
       return '';
diff --git a/library/Class/Multimedia/DeviceHold.php b/library/Class/Multimedia/DeviceHold.php
index 4eeaf5ec0656865a69808f794ccb6723edc72efe..43ef7e1611a6b6843da84607748f96012a8d816d 100644
--- a/library/Class/Multimedia/DeviceHold.php
+++ b/library/Class/Multimedia/DeviceHold.php
@@ -50,7 +50,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
 
 
   public function getFutureHoldsOfUser(Class_Users $user) : array {
-    return Storm_Query::from(Class_Multimedia_DeviceHold::class)
+    return Class_Multimedia_DeviceHold::query()
       ->eq('id_user', $user->getId())
       ->gt('start', $this->getTimeSource()->time())
       ->order('start')
@@ -61,7 +61,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
   public function getDurationForUserBetweenTimes(Class_Users $user,
                                                  int $start,
                                                  int $end) : int {
-    $holds = Storm_Query::from(Class_Multimedia_DeviceHold::class)
+    $holds = Class_Multimedia_DeviceHold::query()
       ->eq('id_user', $user->getId())
       ->gt_eq('start', $start)
       ->lt_eq('end', $end)
@@ -79,7 +79,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
   public function getHoldOnDeviceAtTime(Class_Multimedia_Device $device,
                                         string $time) : ?Class_Multimedia_DeviceHold {
     return
-      Storm_Query::from(Class_Multimedia_DeviceHold::class)
+      Class_Multimedia_DeviceHold::query()
       ->eq('id_device', $device->getId())
       ->lt_eq('start', $time)
       ->gt_eq('end', $time)
@@ -91,7 +91,7 @@ class Multimedia_DeviceHoldloader extends Storm_Model_Loader {
                                                    int $from,
                                                    int $to) : ?Class_Multimedia_DeviceHold {
     return
-      Storm_Query::from(Class_Multimedia_DeviceHold::class)
+      Class_Multimedia_DeviceHold::query()
       ->eq('id_device', $device->getId())
       ->gt_eq('start', $from)
       ->lt('start', $to)
@@ -202,4 +202,4 @@ class Class_Multimedia_DeviceHold extends Storm_Model_Abstract {
   public function getLibelleDevice() : string {
     return $this->getDevice()->getLibelle();
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/Multimedia/PushUsersModifiedRequest.php b/library/Class/Multimedia/PushUsersModifiedRequest.php
index f4150f53bc87b63ceeb4ca53293ca968af44e536..7b16a9c1fb31c9cd1d12cdfff7f931968099f26d 100644
--- a/library/Class/Multimedia/PushUsersModifiedRequest.php
+++ b/library/Class/Multimedia/PushUsersModifiedRequest.php
@@ -51,9 +51,9 @@ class Class_Multimedia_PushUsersModifiedRequest extends Class_Multimedia_PushUse
 
 
   public function withBorrowersDo(string $date_maj) : void {
-    $this->withUsersDo(Storm_Query::from(Class_Users::class)
+    $this->withUsersDo(Class_Users::query()
                        ->eq('role_level', ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB)
                        ->gt_eq('date_maj', $date_maj)
                        ->fetchAll());
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/Notice.php b/library/Class/Notice.php
index 72fc9aa0e00830ad5a6896a7d909c2fcc2574d8c..e1c243cb953d04438c842eac9e2d7459cfddf0dc 100644
--- a/library/Class/Notice.php
+++ b/library/Class/Notice.php
@@ -96,7 +96,7 @@ class Class_Notice extends Storm_Model_Abstract {
   }
 
 
-  public function initializeAttributes($datas) {
+  public function initializeAttributes(array $datas) : self {
     parent::initializeAttributes($datas);
     if (isset($datas['unimarc']))
       $this->_notice_unimarc->setNotice($datas['unimarc']);
diff --git a/library/Class/Notice/Loader.php b/library/Class/Notice/Loader.php
index 65d5fd327ed91c04f569579143e861ce33770d40..9daeadc5141b6445662405e5f4aa9224466e70e4 100644
--- a/library/Class/Notice/Loader.php
+++ b/library/Class/Notice/Loader.php
@@ -212,7 +212,7 @@ class Class_Notice_Loader extends Storm_Model_Loader {
 
 
   public function findAllByClefAlphaStartingWith(string $value) : array {
-    return Storm_Query::from(Class_Notice::class)
+    return Class_Notice::query()
       ->start('clef_alpha', $value)
       ->fetchAll();
   }
diff --git a/library/Class/NoticeOAI.php b/library/Class/NoticeOAI.php
index 04b3c4da4adf336ed527c19cb8697107c998e3fe..a4dd7bc552884ceef07c0c6d506d1dcc20f46cad 100644
--- a/library/Class/NoticeOAI.php
+++ b/library/Class/NoticeOAI.php
@@ -60,7 +60,7 @@ class Class_NoticeOAI extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $datas) {
+  public function updateAttributes(array $datas) : self {
     parent::updateAttributes($datas);
     if (array_key_exists('data', $datas))
       $this->updateAttributes(unserialize($datas['data']));
@@ -318,4 +318,4 @@ class Class_NoticeOAI extends Storm_Model_Abstract {
   }
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 712f4fb04ad05d1810d2349eadab043b04a67569..2f9a0c6ba69d09078f38fdf7f8cf5dc7fdf3195c 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -1319,7 +1319,7 @@ class Class_Profil extends Storm_Model_Abstract {
   /**
    * @return array
    */
-  public function toArray() {
+  public function toArray() : array {
     $attributes = parent::toArray();
 
     // Get value from parent
diff --git a/library/Class/SessionActivity.php b/library/Class/SessionActivity.php
index 680a0057e2dd9b14e7ef62f888d6605049603cf2..05d47075f9b58a59e67fa27011b3c7ffe845a47b 100644
--- a/library/Class/SessionActivity.php
+++ b/library/Class/SessionActivity.php
@@ -597,7 +597,7 @@ class Class_SessionActivity extends Storm_Model_Abstract {
   }
 
 
-  public function toArray() {
+  public function toArray() : array {
     $intervenant_ids = [];
     foreach($this->getIntervenants() as $intervenant)
       $intervenant_ids []= $intervenant->getId();
diff --git a/library/Class/Template/Settings.php b/library/Class/Template/Settings.php
index 8b7631f17835502fcd3e80c6450f7b6acb9bea45..32648d5750d443c109e851de03eb414e70a3ea36 100644
--- a/library/Class/Template/Settings.php
+++ b/library/Class/Template/Settings.php
@@ -61,7 +61,7 @@ class Class_Template_Settings extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $attributes) {
+  public function updateAttributes(array $attributes) : self {
     $local_data = [];
 
     if(isset($attributes['template'])) {
diff --git a/library/Class/TypeDoc.php b/library/Class/TypeDoc.php
index 726708622b6d496007ee652cfeff21ca1d0ba8c6..306bf6e33e934bff774e2afb65c5182387e595e1 100644
--- a/library/Class/TypeDoc.php
+++ b/library/Class/TypeDoc.php
@@ -533,7 +533,7 @@ class Class_TypeDoc extends Storm_Model_Abstract {
   }
 
 
-  public function toArray() {
+  public function toArray() : array {
     return ['id'=> $this->getId(),
             'famille_id' => $this->getFamilleId(),
             'label' => $this->getLabel(),
diff --git a/library/Class/UrlManager.php b/library/Class/UrlManager.php
index e9a49de399b9641144f87c03da77f6f15b278aa9..06000b0d794b502e309bc5bc35c735303947f3a8 100644
--- a/library/Class/UrlManager.php
+++ b/library/Class/UrlManager.php
@@ -112,8 +112,7 @@ class Class_UrlManager {
 
 
   protected function _collectUrlInArticles(array $urls) : array {
-    foreach (Storm_Query::from(Class_Article::class)
-             ->beOr()
+    foreach (Class_Article::orQuery()
              ->like('contenu', $this->_getSqlLike())
              ->like('description', $this->_getSqlLike())
              ->fetchAll() as $article)
@@ -124,7 +123,7 @@ class Class_UrlManager {
 
 
   protected function _collectUrlInNewsletters(array $urls) : array {
-    foreach (Storm_Query::from(Class_Newsletter::class)
+    foreach (Class_Newsletter::query()
              ->like('contenu', $this->_getSqlLike())
              ->fetchAll() as $newsletter)
       $urls = $this->_collectUrlInModel(new Class_UrlManager_Newsletter($newsletter), $urls);
@@ -134,7 +133,7 @@ class Class_UrlManager {
 
 
   protected function _collectUrlInDomains(array $urls) : array {
-    foreach (Storm_Query::from(Class_Catalogue::class)
+    foreach (Class_Catalogue::query()
              ->like('url_img', $this->_getSqlLike())
              ->fetchAll() as $domain)
       $urls = $this->_collectUrlInModel(new Class_UrlManager_Domain($domain), $urls);
@@ -144,7 +143,7 @@ class Class_UrlManager {
 
 
   protected function _collectUrlInLegacyWebsites(array $urls) : array {
-    foreach (Storm_Query::from(Class_Sitotheque::class)
+    foreach (Class_Sitotheque::query()
              ->like('url', $this->_getSqlLike())
              ->fetchAll()
              as $website)
@@ -155,13 +154,13 @@ class Class_UrlManager {
 
 
   protected function _collectUrlInCollections(array $urls) : array {
-    foreach ( Storm_Query::from(Class_Album::class)
+    foreach (Class_Album::query()
              ->like('description', $this->_getSqlLike())
              ->not_in('type_doc_id', Class_TypeDoc::getHarvestedIds())
              ->fetchAll() as $album)
       $urls = $this->_collectUrlInModel(new Class_UrlManager_Album($album), $urls);
 
-    if ( ! $albums = Storm_Query::from(Class_Album::class)
+    if ( ! $albums = Class_Album::query()
         ->not_in('type_doc_id', Class_TypeDoc::getHarvestedIds())
         ->fetchAll())
       return $urls;
@@ -170,7 +169,7 @@ class Class_UrlManager {
       ->collect('id')
       ->getArrayCopy();
 
-    foreach ( Storm_Query::from(Class_AlbumRessource::class)
+    foreach (Class_AlbumRessource::query()
              ->in('id_album', $albums_ids)
              ->like('url', $this->_getSqlLike())
              ->fetchAll() as $resource)
@@ -238,4 +237,4 @@ class Class_UrlManager {
   public function getPreg() : string {
     return $this->_preg;
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php
index 234211421a1f30c420bd9e95b1cd72bad5419706..2f20c3b96364056e3a65621c2cee94143f187d3c 100644
--- a/library/Class/UserGroup.php
+++ b/library/Class/UserGroup.php
@@ -434,7 +434,7 @@ class Class_UserGroup extends Storm_Model_Abstract {
    * Ajoute les droits pour le Zend_Form::populate
    * @return array
    */
-  public function toArray() {
+  public function toArray() : array {
     $attributes = parent::toArray();
     $attributes['rights'] = $this->getRights();
     $attributes['permissions'] = array_map(function($item) { return $item->getId(); },
diff --git a/library/Class/Users.php b/library/Class/Users.php
index 6aef77c564179f08c859b6b00f9eee29c62b8eb3..01694aaddd842a34d468962645d53a4c8e18e59d 100644
--- a/library/Class/Users.php
+++ b/library/Class/Users.php
@@ -1902,7 +1902,7 @@ class Class_Users extends Storm_Model_Abstract {
   }
 
 
-  public function updateAttributes(Array $datas) {
+  public function updateAttributes(array $datas) : self {
     return parent::updateAttributes($this->getSettingsModel()->updateAttributes($datas));
   }
 
diff --git a/library/storm b/library/storm
index 3dd6fa0d1a69385fd5125d617aaa3c2209be5479..2796d86845aff88541132cd47003abf56959fd5f 160000
--- a/library/storm
+++ b/library/storm
@@ -1 +1 @@
-Subproject commit 3dd6fa0d1a69385fd5125d617aaa3c2209be5479
+Subproject commit 2796d86845aff88541132cd47003abf56959fd5f
diff --git a/library/templates/Intonation/Library/Widget/Search/View.php b/library/templates/Intonation/Library/Widget/Search/View.php
index b3927a5e3192d2e62e3e47963aba63bcad17a58c..71aea51fb17ade06537c19086bda26c9f9a495bd 100644
--- a/library/templates/Intonation/Library/Widget/Search/View.php
+++ b/library/templates/Intonation/Library/Widget/Search/View.php
@@ -353,7 +353,7 @@ abstract class IntonationSearchRenderAbstract {
 
   protected function _createDomainSelectorByFacetCode(ZendAfi_Form $form, string $facet_code) : ?Zend_Form_Element {
     $facet_thesaurus_id = substr($facet_code, 1);
-    if ((!$facets = Storm_Query::from(Class_CodifThesaurus::class)
+    if ((!$facets = Class_CodifThesaurus::query()
          ->start('id_thesaurus', $facet_thesaurus_id)
          ->not_is_null('id_origine')
          ->eq('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)
@@ -361,7 +361,7 @@ abstract class IntonationSearchRenderAbstract {
          ->fetchAll()))
       return null;
 
-    $parent_facet = Storm_Query::from(Class_CodifThesaurus::class)
+    $parent_facet = Class_CodifThesaurus::query()
       ->eq('id_thesaurus', $facet_thesaurus_id)
       ->fetchFirst();
     if ((!$domain_ids = $parent_facet->getRuleListDomainId()))
diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php
index 8dc54bcba5312245448975474dfd3158eba63ec5..da11c72facc21060da08fea4209b0ae604859876 100644
--- a/tests/application/modules/AbstractControllerTestCase.php
+++ b/tests/application/modules/AbstractControllerTestCase.php
@@ -21,13 +21,15 @@
 
 
 abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase {
-  use Storm_Test_THelpers;
+  use Storm_Test_THelpers, Storm_Test_TQueryTests;
 
   protected
     $_registry_sql,
     $_registry_cfg,
     $_storm_default_to_volatile = true;
 
+  protected bool $_storm_mock_zend_adapter = false;
+
   //permet d'authentifier sur la partie admin avant test
   public $bootstrap = 'bootstrap_frontcontroller.php';
 
@@ -35,12 +37,12 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
 
 
   protected function _initMockProfil() {
-    $this->fixture('Class_Profil',
+    $this->fixture(Class_Profil::class,
                    ['id' => 1,
                     'libelle' => 'portail',
                     'parent_id' => null]);
 
-    $profil = $this->fixture('Class_Profil',
+    $profil = $this->fixture(Class_Profil::class,
                              ['id' => 2,
                               'libelle' => 'PHP Unit',
                               'titre_site' => 'PHP Unit',
@@ -108,14 +110,14 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
 
   public function setUp() {
     Storm_Model_Abstract::unsetLoaders();
-    if($this->_storm_default_to_volatile) {
+    if ($this->_storm_default_to_volatile) {
       Storm_Model_Loader::defaultToVolatile();
       Class_Versions::defaultToVolatile();
     }
 
     $this->_registry_sql = Zend_Registry::get('sql');
     $this->_registry_cfg = Zend_Registry::get('cfg');
-    if (!is_object($this->_registry_sql))
+    if ( ! is_object($this->_registry_sql))
       $this->fail('SQL in registry should be an object');
     Class_ScriptLoader::resetInstance();
 
@@ -165,6 +167,8 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
     $this->_login();
     Class_InspectorGadget::setInstance(null);
     Class_User_RecordCarts::resetCache();
+
+    $this->_querySetUp();
   }
 
 
@@ -172,6 +176,8 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
     new TearDown($this->_storm_default_to_volatile,
                  $this->_registry_sql,
                  $this->_registry_cfg);
+
+    $this->_queryTearDown();
   }
 
 
@@ -192,6 +198,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
   protected function _generateLoaderFor($model, $methods) {
     $loader = $this->createMock('Mock'.$model, $methods);
     Storm_Model_Abstract::setLoaderFor($model, $loader);
+
     return $loader;
   }
 
@@ -571,7 +578,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
 
   public function checkEmptyTitleForAttrib( string $attrib , string $message) {
     foreach ($this->queryXPath('//'.$attrib) as $element)  {
-       $this->assertFalse($element->textContent==''
+      $this->assertFalse($element->textContent==''
                          && !$element->hasChildNodes()
                          && !$element->getAttribute('aria-hidden')
                          && !$element->getAttribute('title'),
diff --git a/tests/library/Class/Cosmogramme/Integration/PhasePrepareIntegrationsTest.php b/tests/library/Class/Cosmogramme/Integration/PhasePrepareIntegrationsTest.php
index 5fb71c4905be52354cdd9512080029be51620f7d..7ab0e294cea8a2ff67ebad4d8edfe831ae3cdaa0 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhasePrepareIntegrationsTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhasePrepareIntegrationsTest.php
@@ -19,6 +19,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
+
 abstract class PhasePrepareIntegrationsWithOAITestCase
   extends Class_Cosmogramme_Integration_PhaseTestCase {
 
@@ -208,6 +209,7 @@ abstract class PhasePrepareIntegrationsWithOAITestCase
 
 
 class PhasePrepareIntegrationsWithOAITest extends PhasePrepareIntegrationsWithOAITestCase {
+
   /** @test */
   public function integrationDateShouldBe2015_03_26_14h() {
     $this->assertEquals('2015-03-26 14:00:00',
@@ -329,6 +331,7 @@ class PhasePrepareIntegrationsWithOAITest extends PhasePrepareIntegrationsWithOA
 
 abstract class PhasePrepareIntegrationsNanookStandardTestCase
   extends Class_Cosmogramme_Integration_PhaseTestCase {
+
   protected $_http_client;
 
   protected function _prepareFixtures() {
@@ -517,16 +520,16 @@ abstract class PhasePrepareIntegrationsNanookStandardTestCase
       $db_adapter->whenCalled('query')
                  ->with('delete from ' . $table . ' where date_maj != "' . $now->dateYmd() . '"')
                  ->willDo(function() use ($model_class, $now)
-                          {
-                            $model_class::deleteBy(['date_maj not' => $now->dateYmd()]);
-                          })
+                 {
+                   $model_class::deleteBy(['date_maj not' => $now->dateYmd()]);
+                 })
 
                  ->whenCalled('query')
                  ->with('update exemplaires set ' . $item_field . '="" where ' . $item_field . '="34"')
                  ->willDo(function() use ($item_field)
-                          {
-                            $this->_updateItems($item_field);
-                          })
+                 {
+                   $this->_updateItems($item_field);
+                 })
 
                  ->whenCalled('query')
                  ->with('update ' . $table . ' set date_maj=""')
@@ -535,10 +538,10 @@ abstract class PhasePrepareIntegrationsNanookStandardTestCase
                  ->whenCalled('query')
                  ->with('update notices set date_maj="2015-03-26 14:00:00" where match(facettes) against("' . $model_class::CODE_FACETTE . '34" in BOOLEAN MODE)')
                  ->willDo(function() use($record_id)
-                          {
-                            Class_Notice::find($record_id)
-                              ->setDateMaj('2015-03-26 14:00:00');
-                          });
+                 {
+                   Class_Notice::find($record_id)
+                     ->setDateMaj('2015-03-26 14:00:00');
+                 });
 
     }
 
@@ -555,11 +558,11 @@ abstract class PhasePrepareIntegrationsNanookStandardTestCase
   protected function _updateItems($item_field) {
     (new Storm_Model_Collection(Class_Exemplaire::findAllBy([$item_field => 34])))
       ->eachDo(function($model) use($item_field)
-               {
-                 $model
-                   ->callSetterByAttributeName($item_field, '')
-                   ->save();
-               });
+      {
+        $model
+          ->callSetterByAttributeName($item_field, '')
+          ->save();
+    });
   }
 
 
@@ -843,7 +846,6 @@ class PhasePrepareIntegrationsFlushBeforeFullAndTotalRecordsTest
       ->touch('ftp/my-library.net/transferts/foo/mylibrarytotal.txt',
               fn($entry) => $entry->setSize(1024))
       ;
-
   }
 
 
@@ -1061,6 +1063,7 @@ class PhasePrepareIntegrationsWithFlushBeforeFullAndMultiSIGBTest
 
 
 class PhasePrepareIntegrationsKindTest extends Class_Cosmogramme_Integration_PhaseTestCase {
+
   protected $_http_client;
 
   public function setUp() {
@@ -1087,21 +1090,21 @@ class PhasePrepareIntegrationsKindTest extends Class_Cosmogramme_Integration_Pha
       ->whenCalled('query')
       ->with('delete from codif_genre where date_maj != "2019-02-12"')
       ->willDo(function()
-               {
-                 (new Storm_Model_Collection(Class_CodifGenre::findAllBy(['date_maj not' => '2019-02-12'])))
-                   ->eachDo('delete');
-               })
+      {
+        (new Storm_Model_Collection(Class_CodifGenre::findAllBy(['date_maj not' => '2019-02-12'])))
+          ->eachDo('delete');
+      })
 
       ->whenCalled('query')
       ->with('update codif_genre set date_maj=""')
       ->willDo(function()
-               {
-                 (new Storm_Model_Collection(Class_CodifGenre::findAll()))
-                   ->eachDo(function($model)
-                            {
-                              $model->setDateMaj('');
-                            });
-               });
+      {
+        (new Storm_Model_Collection(Class_CodifGenre::findAll()))
+          ->eachDo(function($model)
+          {
+            $model->setDateMaj('');
+          });
+      });
 
     Class_Cosmogramme_Generator_KindsTask::setDbAdapter($sql);
 
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
index 3bbd1d6e6f9b3d1eb6b79fef54e50dbc382899e6..80e9fad151a94fda04517efd64a43b957303f19f 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
@@ -425,8 +425,8 @@ class CalendarWithPreferencesNbEventsOneTest extends CalendarWithEmptyPreference
 
 
 
-class CalendarWithEmptyParamsLocaleEnAndOnlyTwoArticlesReturned
-  Extends CalendarWithEmptyPreferencesTestCase {
+class CalendarWithEmptyParamsLocaleEnAndOnlyTwoArticlesReturnedTest
+  extends CalendarWithEmptyPreferencesTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -458,6 +458,9 @@ class CalendarWithEmptyParamsLocaleEnAndOnlyTwoArticlesReturned
                  'events_only' => true,
                  'published' => true])
          ->answers([ $this->amber ])
+
+         ->whenCalled('getArticlesByPreferences')
+         ->answers([])
       ;
 
     $this->html = $this->helper->getBoite();
diff --git a/tests/scenarios/AdvancedSearch/CustomizedInputTest.php b/tests/scenarios/AdvancedSearch/CustomizedInputTest.php
index 25d2f260a7a8160382d47163267174ac0e529b94..2ee2f7b3e212ac60d6d785f0d6a43ab594739bdd 100644
--- a/tests/scenarios/AdvancedSearch/CustomizedInputTest.php
+++ b/tests/scenarios/AdvancedSearch/CustomizedInputTest.php
@@ -21,6 +21,7 @@
 
 
 abstract class CustomizedInputTestCase extends AbstractControllerTestCase {
+
   protected Storm_FileSystem_Volatile $_file_system;
   protected string $_form_filename = 'userfiles/forms/form.php';
 
@@ -43,27 +44,27 @@ abstract class CustomizedInputTestCase extends AbstractControllerTestCase {
 
     $includer = function($path, $form) {
       $form
-      ->addElement('searchAxeMultiInput',
-                   'mon_super_input',
-                   ['label' => 'hohooh',
-                    'axes' => [['name' => 'type_doc',
-                                'label' => 'Type de document'],
+        ->addElement('searchAxeMultiInput',
+                     'mon_super_input',
+                     ['label' => 'hohooh',
+                      'axes' => [['name' => 'type_doc',
+                                  'label' => 'Type de document'],
 
-                               ['name' => 'title',
-                                'label' => 'Mots du titre'],
+                                 ['name' => 'title',
+                                  'label' => 'Mots du titre'],
 
-                               ['name' => 'dynamic_facet_DOC0',
-                                'label' => 'Document opposable'],
+                                 ['name' => 'dynamic_facet_DOC0',
+                                  'label' => 'Document opposable'],
 
-                               ['name' => 'fulltext_dynamic_facet_DOC1',
-                                'label' => 'Document contestable'],
+                                 ['name' => 'fulltext_dynamic_facet_DOC1',
+                                  'label' => 'Document contestable'],
 
-                               ['name' => 'authority_THES',
-                                'label' => 'Mot-clés',
-                                'tree_roots' => '444322-228822'],
-                    ]])
+                                 ['name' => 'authority_THES',
+                                  'label' => 'Mot-clés',
+                                  'tree_roots' => '444322-228822'],
+                      ]])
 
-      ->addUniqDisplayGroup('multi');
+        ->addUniqDisplayGroup('multi');
     };
 
     Class_SearchForm::setIncluder($includer);
@@ -74,6 +75,7 @@ abstract class CustomizedInputTestCase extends AbstractControllerTestCase {
 
 
 class CustomizedInputTypeDocTest extends CustomizedInputTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -98,6 +100,7 @@ class CustomizedInputTypeDocTest extends CustomizedInputTestCase {
 
 
 class CustomizedInputTypeDocWithValueTest extends CustomizedInputTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -115,8 +118,7 @@ class CustomizedInputTypeDocWithValueTest extends CustomizedInputTestCase {
 
   /** @test */
   public function pageShouldContainsSelectTypeDocWithSelectedValue1() {
-    $this->assertXPath('//select[@name="mon_super_input_type_doc"]//option[@value="1"][@selected]',
-                       $this->_response->getBody());
+    $this->assertXPath('//select[@name="mon_super_input_type_doc"]//option[@value="1"][@selected]');
   }
 }
 
@@ -124,6 +126,7 @@ class CustomizedInputTypeDocWithValueTest extends CustomizedInputTestCase {
 
 
 class CustomizedInputThesaurusSelectTest extends CustomizedInputTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -163,6 +166,7 @@ class CustomizedInputThesaurusSelectTest extends CustomizedInputTestCase {
 
 
 class CustomizedInputThesaurusFulltextTest extends CustomizedInputTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -186,6 +190,7 @@ class CustomizedInputThesaurusFulltextTest extends CustomizedInputTestCase {
 
 
 class CustomizedInputAuthorityTest extends CustomizedInputTestCase {
+
   protected string $_prefix = '//div[starts-with(@id, "authority_picker_mon_super_input_authority_THES_")]';
   protected string $_random_salt = '';
 
@@ -254,6 +259,7 @@ class CustomizedInputAuthorityTest extends CustomizedInputTestCase {
 
 
 class CustomizedInputWithSpecificsAuthorityTest extends CustomizedInputTestCase {
+
   protected string $_prefix = '//div[starts-with(@id, "authority_picker_mon_super_input_authority_THES_")]';
   protected string $_random_salt = '';
 
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsAdminTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsAdminTest.php
index 30844c9458bcd741a6c9473e3a2d8deddc22d821..80bb7be2f089377587c74b5e15d3ef0b861e2c9e 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsAdminTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsAdminTest.php
@@ -21,7 +21,6 @@
 
 
 class ArticlesMultipleTimingsAdminVarTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -39,9 +38,8 @@ class ArticlesMultipleTimingsAdminVarTest extends Admin_AbstractControllerTestCa
 
 
 
-class ArticlesMultipleTimingsAdminActivationCmsControllerTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
+class ArticlesMultipleTimingsAdminActivationCmsControllerTest
+  extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -61,7 +59,6 @@ class ArticlesMultipleTimingsAdminActivationCmsControllerTest extends Admin_Abst
   }
 
 
-
   /** @test */
   public function without_ENABLE_ARTICLES_TIMINGS_setDivHeaderActionsShouldNotContainsLinkToEventTimings() {
     Class_AdminVar::set('ENABLE_ARTICLES_TIMINGS', 0);
@@ -75,8 +72,6 @@ class ArticlesMultipleTimingsAdminActivationCmsControllerTest extends Admin_Abst
 
 
 abstract class ArticlesMultipleTimingsAdminTestCase extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
@@ -102,14 +97,15 @@ abstract class ArticlesMultipleTimingsAdminTestCase extends Admin_AbstractContro
 
 
 
-class ArticlesMultipleTimingsAdminCmsControllerEventTimingIndexArticleNotFoundTest extends ArticlesMultipleTimingsAdminTestCase {
-
+class ArticlesMultipleTimingsAdminCmsControllerEventTimingIndexArticleNotFoundTest
+  extends ArticlesMultipleTimingsAdminTestCase {
 
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/cms/event-timings/article_id/666');
   }
 
+
   /** @test */
   public function responseShouldRedirectToIndex() {
     $this->assertRedirectTo('/admin/cms');
@@ -119,7 +115,9 @@ class ArticlesMultipleTimingsAdminCmsControllerEventTimingIndexArticleNotFoundTe
 
 
 
-class ArticlesMultipleTimingsAdminCmsControllerEventTimingIndexTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminCmsControllerEventTimingIndexTest
+  extends ArticlesMultipleTimingsAdminTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/cms/event-timings/article_id/2');
@@ -217,7 +215,9 @@ class ArticlesMultipleTimingsAdminDeleteTest extends ArticlesMultipleTimingsAdmi
 
 
 
-class ArticlesMultipleTimingsAdminCmsDeleteArticleTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminCmsDeleteArticleTest
+  extends ArticlesMultipleTimingsAdminTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/cms/force-delete/id/2');
@@ -248,7 +248,7 @@ class ArticlesMultipleTimingsAdminEditTest extends ArticlesMultipleTimingsAdminT
   }
 
 
-/** @test */
+  /** @test */
   public function editFormShouldHaveTitleHeureDuConteEditerUnHoraire() {
     $this->assertXPathContentContains('//head//title','Heure du conte : modifier un horaire');
   }
@@ -275,7 +275,9 @@ class ArticlesMultipleTimingsAdminEditTest extends ArticlesMultipleTimingsAdminT
 
 
 
-class ArticlesMultipleTimingsAdminEditWithWrongIdTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminEditWithWrongIdTest
+  extends ArticlesMultipleTimingsAdminTestCase {
+
   public function setUp() {
     parent::setup();
     $this->dispatch('/admin/cms/event-timing-edit/id/42');
@@ -369,7 +371,9 @@ class ArticlesMultipleTimingsAdminAddDispatchTest
 
 
 
-class ArticlesMultipleTimingsAdminAddPostDispatchTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminAddPostDispatchTest
+  extends ArticlesMultipleTimingsAdminTestCase {
+
   protected $_event_time;
 
   public function setUp() {
@@ -381,7 +385,6 @@ class ArticlesMultipleTimingsAdminAddPostDispatchTest extends ArticlesMultipleTi
   }
 
 
-
   /** @test */
   public function eventTimingThreeShouldStart2021_07_21_10H00() {
     $this->assertEquals('2021-07-21 10:00', $this->_event_time->getStart());
@@ -416,7 +419,8 @@ class ArticlesMultipleTimingsAdminAddPostDispatchTest extends ArticlesMultipleTi
 
 
 
-class ArticlesMultipleTimingsAdminAddPostDispatchWithEndBeforeStartTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminAddPostDispatchWithEndBeforeStartTest
+  extends ArticlesMultipleTimingsAdminTestCase {
 
   public function setUp() {
     parent::setup();
@@ -435,7 +439,8 @@ class ArticlesMultipleTimingsAdminAddPostDispatchWithEndBeforeStartTest extends
 
 
 
-class ArticlesMultipleTimingsAdminAddPostDispatchWithSingleDateTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminAddPostDispatchWithSingleDateTest
+  extends ArticlesMultipleTimingsAdminTestCase {
 
   public function setUp() {
     parent::setup();
@@ -453,7 +458,8 @@ class ArticlesMultipleTimingsAdminAddPostDispatchWithSingleDateTest extends Arti
 
 
 
-class ArticlesEventTimingAddPostDispatchWithWrongFormatDateTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesEventTimingAddPostDispatchWithWrongFormatDateTest
+  extends ArticlesMultipleTimingsAdminTestCase {
 
   public function setUp() {
     parent::setup();
@@ -471,7 +477,8 @@ class ArticlesEventTimingAddPostDispatchWithWrongFormatDateTest extends Articles
 
 
 
-class ArticlesMultipleTimingsAdminCmsEditEventTimingAsRedacteurTest extends ArticlesMultipleTimingsAdminTestCase {
+class ArticlesMultipleTimingsAdminCmsEditEventTimingAsRedacteurTest
+  extends ArticlesMultipleTimingsAdminTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -527,4 +534,4 @@ class ArticlesMultipleTimingsAdminCmsEditEventTimingAsRedacteurTest extends Arti
     $this->dispatch('/admin/cms/event-timing-edit/id/1');
     $this->assertRedirectTo('/admin/cms/event-timings/article_id/2');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
index d9af89e005a4bf319220259bf34e27892a56da6b..8b33f8208a6f2e31728c57879b6d688aa4d783db 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
@@ -19,7 +19,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
+
 abstract class ArticlesMultipleTimingsCalendarTestCase extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -28,7 +30,6 @@ abstract class ArticlesMultipleTimingsCalendarTestCase extends AbstractControlle
                                         'start' => '2021-06-01 10:00:00',
                                         'end' => '2021-06-01 11:00:00']);
 
-
     $apero_timing_two = $this->fixture(Class_Article_EventTiming::class,
                                        ['id' => 2,
                                         'start' => '2021-06-10 10:00:00',
@@ -87,7 +88,6 @@ abstract class ArticlesMultipleTimingsCalendarTestCase extends AbstractControlle
                                                                              'end' => '2021-06-13 23:30:00'])
                                          ]]);
 
-
     $this->onLoaderOfModel(Class_Article::class)
          ->whenCalled('getArticlesByPreferences')
          ->with([
@@ -168,11 +168,8 @@ class ArticlesMultipleTimingsCalendarInHistoricTest
   public function setUp() {
     parent::setUp();
 
-    $profile = $this->fixture(Class_Profil::class,
-                              ['id' => 34,
-                               'template' => 'Historic'])
-                    ->beCurrentProfil();
-    $profile_patcher = (new Class_Template_ProfilePatcher(null))->setProfile($profile);
+    $profile_patcher = (new Class_Template_ProfilePatcher(null))
+      ->setProfile(Class_Profil::getCurrentProfil());
     $profile_patcher
       ->addWidget(Class_Systeme_ModulesAccueil_Calendrier::CODE,
                   2,
@@ -187,8 +184,7 @@ class ArticlesMultipleTimingsCalendarInHistoricTest
   /** @test */
   public function calendarShouldContainsOnlyOneArticleApero() {
     $this->assertXPathCount('//span[@class="title"]/a[contains(@href, "cms/articleview/id/1")]',
-                            1,
-                            $this->_response->getBody());
+                            1);
   }
 
 
@@ -232,6 +228,7 @@ class ArticlesMultipleTimingsCalendarInHistoricTest
 
 
 class ArticlesMultipleTimingsCalendarInMuscleTest extends ArticlesMultipleTimingsCalendarTestCase {
+
   public function setUp() {
     parent::setUp();
 
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
index 6afc0e37514b494594e419b05080873afec49b8e..deb2b2d563142cd81f676ffcc03df89415661447 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
@@ -24,8 +24,13 @@ require_once(__DIR__ . '/../../library/Class/ArticleLoaderTest.php');
 class ArticlesMultipleTimingsLoaderSqlTest
   extends ArticleLoaderGetArticlesByPreferencesTestCase {
 
+  // Keep volatile = true parent ArticleLoaderGetArticlesByPreferencesTestCase is at false
+  protected $_storm_default_to_volatile = true;
+  protected bool $_storm_mock_zend_adapter = true;
+
   public function setUp() {
     parent::setUp();
+
     Class_Article_SelectWithTimings::setTimeSource(new TimeSourceForTest('2011-10-20 10:00:00'));
     Class_AdminVar::set('ENABLE_ARTICLES_TIMINGS', 1);
   }
@@ -122,6 +127,7 @@ class ArticlesMultipleTimingsLoaderSqlTest
 
 
 class ArticlesMultipleTimingsLoaderDatesTest extends ModelTestCase {
+
   /** @test */
   public function loadingWithStartAndEndShouldReplaceEventsDebutAndFin() {
     $article = Class_Article::newFromRow(['ID_ARTICLE' => 23,
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php
index 5e3f13b6ab425f3bc64580b22507959e693b22b6..3f2468b0de3c29ffbb2edab26666c4ae057e6c00 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsOpenAgendaImportTest.php
@@ -39,6 +39,7 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge
                     'end' => '2021-07-08 11:00'
                    ]);
 
+    // We want to do a setup after init article fixture to overwrite id 2
     parent::setUp();
     Class_AdminVar::set('ENABLE_ARTICLES_TIMINGS', 1);
     Class_ExternalAgenda::find(12)->import();
@@ -58,7 +59,6 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge
   }
 
 
-
   /** @test */
   public function firstArticleUpdatedAtShouldBe20191126() {
     $this->assertEquals('2019-11-26 15:12', Class_Article::find(1)->getDateMaj());
@@ -96,7 +96,6 @@ class ArticlesMultipleTimingsOpenAgendaImportTest extends ExternalAgendasOpenAge
                           'article_id' => 1,
                           'id' => 3]],
                         $this->_dumpArticleTimings(1));
-
   }
 
 
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsViewTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsViewTest.php
index 92373cba8401f6f2186c2295db075cb843fb5409..aa7171dc1db5f0da60bf5a7d4a28452cfaf83a96 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsViewTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsViewTest.php
@@ -21,11 +21,10 @@
 
 
 abstract class ArticlesMultipleTimingsViewTestCase extends AbstractControllerTestCase {
-    protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('ENABLE_ARTICLES_TIMINGS', 1);
 
     $heure_du_conte = $this->fixture(Class_Article::class,
@@ -81,6 +80,7 @@ abstract class ArticlesMultipleTimingsViewTestCase extends AbstractControllerTes
 
 
 class ArticlesMultipleTimingsViewHistoricTest extends ArticlesMultipleTimingsViewTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->dispatch('/cms/articleview/id/5');
@@ -146,6 +146,7 @@ class ArticlesMultipleTimingsViewHistoricTest extends ArticlesMultipleTimingsVie
 
 
 class ArticlesMultipleTimingsViewTemplatesTest extends ArticlesMultipleTimingsViewTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->_buildTemplateProfil(['id' => 4,
@@ -216,6 +217,7 @@ class ArticlesMultipleTimingsViewWithEmptyTimingsTest
 
 
 class ArticlesMultipleTimingsViewWithNullAllDayTest extends ArticlesMultipleTimingsViewTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_Article::find(5)->setAllDay(null)->save();
diff --git a/tests/scenarios/Authorities/AuthoritiesTest.php b/tests/scenarios/Authorities/AuthoritiesTest.php
index ee2e00c3d1b3c846122d1530bbfabf1884152475..0449198b5d1831559739319400b791bc4de60a58 100644
--- a/tests/scenarios/Authorities/AuthoritiesTest.php
+++ b/tests/scenarios/Authorities/AuthoritiesTest.php
@@ -21,14 +21,13 @@
 
 
 abstract class AuthoritiesTestCase extends AbstractControllerTestCase {
-  protected
-    $_storm_default_to_volatile = true;
 
   public function setup() {
     parent::setup();
+
     ZendAfi_Auth::getInstance()->clearIdentity();
 
-    $this->fixture('Class_Notice',
+    $this->fixture(Class_Notice::class,
                    ['id' => 1,
                     'type_doc' => 'j',
                     'annee' => '2017',
@@ -36,18 +35,17 @@ abstract class AuthoritiesTestCase extends AbstractControllerTestCase {
                     'facettes' => 'HMOTS HMOTS0001 HNRNR0002',
                     'unimarc' => file_get_contents(__DIR__ . '/developpement_local.mrc')]);
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 999,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_origine' => '185611',
                     'id_notice' => 1]);
 
-
     $unimarc = (new Class_Notice_AuthorityPartial)
       ->newWith('j', '190254', 'Schéma de services', ['b' => 'TESS'])
       ->render();
 
-    $this->fixture('Class_Notice',
+    $this->fixture(Class_Notice::class,
                    ['id' => 2,
                     'type_doc' => 'j',
                     'annee' => '2017',
@@ -55,7 +53,7 @@ abstract class AuthoritiesTestCase extends AbstractControllerTestCase {
                     'facettes' => 'HMOTS HMOTS0002',
                     'unimarc' => $unimarc]);
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 1022,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_origine' => '190254',
@@ -65,7 +63,9 @@ abstract class AuthoritiesTestCase extends AbstractControllerTestCase {
 
 
 
+
 class AuthoritiesRechercheControllerViewNoticeAuthoritySimpleTest extends AuthoritiesTestCase {
+
   /** @test */
   public function titleShouldBeDeveloppementLocal() {
     $this->dispatch('/recherche/viewnotice/id/1');
@@ -82,7 +82,10 @@ class AuthoritiesRechercheControllerViewNoticeAuthoritySimpleTest extends Author
 
 
 
-class AuthoritiesRechercheControllerViewNoticeWithAuthorityIdAndThesaurusIdTest extends AuthoritiesTestCase {
+
+class AuthoritiesRechercheControllerViewNoticeWithAuthorityIdAndThesaurusIdTest
+  extends AuthoritiesTestCase {
+
   /** @test */
   public function shouldRedirectToViewNoticeIdOne() {
     $this->dispatch('/recherche/viewnotice/authority_id/185611/thesaurus_id/MOTS');
@@ -94,8 +97,10 @@ class AuthoritiesRechercheControllerViewNoticeWithAuthorityIdAndThesaurusIdTest
 
 
 class AuthoritiesAuthoritySearchControllerWithoutCritereTest extends AuthoritiesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_MoteurRecherche::setInstance($this->mock()
                                        ->whenCalled('lancerRecherche')
                                        ->answers(null));
@@ -131,11 +136,14 @@ class AuthoritiesAuthoritySearchControllerWithoutCritereTest extends Authorities
 
 
 class AuthoritiesAuthoritySearchControllerWithTreeRootsTest extends AuthoritiesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_MoteurRecherche::setInstance($this->mock()
                                        ->whenCalled('lancerRecherche')
                                        ->answers(null));
+
     $this->dispatch('/opac/authority-search/index/tree_roots/185611');
   }
 
@@ -157,11 +165,14 @@ class AuthoritiesAuthoritySearchControllerWithTreeRootsTest extends AuthoritiesT
 
 
 class AuthoritiesAuthoritySearchControllerWithTreeRootsSelectedTest extends AuthoritiesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_MoteurRecherche::setInstance($this->mock()
                                        ->whenCalled('lancerRecherche')
                                        ->answers(null));
+
     $this->dispatch('/opac/authority-search/index/tree_roots/185611/record_id/1');
   }
 
@@ -190,8 +201,10 @@ class AuthoritiesAuthoritySearchControllerWithTreeRootsSelectedTest extends Auth
 
 
 class AuthoritiesAuthoritySearchControllerPostTest extends AuthoritiesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->postDispatch('/opac/authority-search', ['expressionRecherche' => 'local']);
   }
 
@@ -318,13 +331,13 @@ class AuthoritiesAuthoritySearchControllerWithRecordIdTest
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 234,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_notice' => 4,
                     'id_origine' => '185349']);
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 238,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_notice' => 5,
@@ -401,16 +414,17 @@ class AuthoritiesAuthoritySearchControllerWithRecordIdInPopupTest
 
 
 class AuthoritiesNoticeAjaxControllerTest extends AuthoritiesTestCase {
+
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 67,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_origine' => '185349',
                     'id_notice' => 2]);
 
-    $this->fixture('Class_Exemplaire',
+    $this->fixture(Class_Exemplaire::class,
                    ['id' => 68,
                     'type' => Class_Notice::TYPE_AUTHORITY,
                     'id_origine' => '189260',
@@ -478,12 +492,13 @@ class AuthoritiesNoticeAjaxControllerTest extends AuthoritiesTestCase {
 
 
 class AuthoritiesBibliographicDynamicFacetsWithoutIndexSystemTest extends ModelTestCase {
+
   protected $_thesauri;
 
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 6,
                     'libelle' => 'Mots-clés TESS',
                     'id_thesaurus' => 'MOTS',
@@ -495,7 +510,7 @@ class AuthoritiesBibliographicDynamicFacetsWithoutIndexSystemTest extends ModelT
 
     $this->_thesauri = (new Class_Cosmogramme_Integration_Record_BibliographicDynamicFacets())
       ->thesauriOf((new Class_NoticeUnimarc())->setNotice(file_get_contents(__DIR__ . '/vagabond.mrc')),
-                   $this->fixture('Class_IntBib', ['id' => 3]));
+                   $this->fixture(Class_IntBib::class, ['id' => 3]));
   }
 
 
@@ -539,6 +554,7 @@ class AuthoritiesBibliographicDynamicFacetsWithoutIndexSystemTest extends ModelT
 
 
 class AuthoritiesBibliographicDynamicFacetsWithIndexSystemNotExistingTest extends ModelTestCase {
+
   protected
     $_thesaurus,
     $_authority;
@@ -546,7 +562,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemNotExistingTest extend
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 6,
                     'libelle' => 'Mots-clés TESS',
                     'id_thesaurus' => 'MOTS',
@@ -562,7 +578,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemNotExistingTest extend
                         'default_type' => 'j',
                         'thesaurus' => '6']]]];
 
-    $this->fixture('Class_IntProfilDonnees',
+    $this->fixture(Class_IntProfilDonnees::class,
                    ['id' => 1004,
                     'libelle' => 'Authorities',
                     'type_fichier' => Class_IntProfilDonnees::FT_AUTHORITY,
@@ -575,7 +591,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemNotExistingTest extend
 
     $thesauri = (new Class_Cosmogramme_Integration_Record_BibliographicDynamicFacets())
       ->thesauriOf((new Class_NoticeUnimarc())->setNotice(file_get_contents(__DIR__ . '/vagabond.mrc')),
-                   $this->fixture('Class_IntBib', ['id' => 3]));
+                   $this->fixture(Class_IntBib::class, ['id' => 3]));
 
     $this->_thesaurus = reset($thesauri);
 
@@ -658,7 +674,9 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemNotExistingTest extend
 
 
 
-class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest extends ModelTestCase {
+class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest
+  extends ModelTestCase {
+
   protected
     $_thesaurus,
     $_authority;
@@ -666,7 +684,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest ex
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 6,
                     'libelle' => 'Mots-clés TESS',
                     'id_thesaurus' => 'MOTS',
@@ -682,7 +700,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest ex
                         'default_type' => 'j',
                         'thesaurus' => '6']]]];
 
-    $this->fixture('Class_IntProfilDonnees',
+    $this->fixture(Class_IntProfilDonnees::class,
                    ['id' => 1004,
                     'libelle' => 'Authorities',
                     'type_fichier' => Class_IntProfilDonnees::FT_AUTHORITY,
@@ -691,20 +709,22 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest ex
                     'attributs' => serialize($attributs),
                    ]);
 
-    $this->fixture('Class_Notice', ['id' => 14,
-                                    'type' => Class_Notice::TYPE_AUTHORITY,
-                                    'type_doc' => 'j',
-                                    'facettes' => 'HMOTS']);
+    $this->fixture(Class_Notice::class,
+                   ['id' => 14,
+                    'type' => Class_Notice::TYPE_AUTHORITY,
+                    'type_doc' => 'j',
+                    'facettes' => 'HMOTS']);
 
-    $this->fixture('Class_Exemplaire', ['id' => 145,
-                                        'type' => Class_Notice::TYPE_AUTHORITY,
-                                        'id_origine' => 213399,
-                                        'id_int_bib' => 5,
-                                        'notice' => Class_Notice::find(14)]);
+    $this->fixture(Class_Exemplaire::class,
+                   ['id' => 145,
+                    'type' => Class_Notice::TYPE_AUTHORITY,
+                    'id_origine' => 213399,
+                    'id_int_bib' => 5,
+                    'notice' => Class_Notice::find(14)]);
 
     $thesauri = (new Class_Cosmogramme_Integration_Record_BibliographicDynamicFacets())
       ->thesauriOf((new Class_NoticeUnimarc())->setNotice(file_get_contents(__DIR__ . '/vagabond.mrc')),
-                   $this->fixture('Class_IntBib', ['id' => 3]));
+                   $this->fixture(Class_IntBib::class, ['id' => 3]));
 
     $this->_thesaurus = reset($thesauri);
   }
@@ -716,7 +736,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest ex
   }
 
 
-   /** @test */
+  /** @test */
   public function thesaurusIdOrigineShouldBe21399() {
     $this->assertEquals('213399', $this->_thesaurus->getIdOrigine());
   }
@@ -767,6 +787,7 @@ class AuthoritiesBibliographicDynamicFacetsWithIndexSystemAlreadyExistingTest ex
 
 
 abstract class AuthoritiesFacetsWithIndexSystemTestCase extends ModelTestCase {
+
   protected $_facets;
 
   public function setUp() {
@@ -778,7 +799,7 @@ abstract class AuthoritiesFacetsWithIndexSystemTestCase extends ModelTestCase {
                         'default_type' => 'j',
                         'thesaurus' => '6']]]];
 
-    $profil = $this->fixture('Class_IntProfilDonnees',
+    $profil = $this->fixture(Class_IntProfilDonnees::class,
                              ['id' => 1004,
                               'libelle' => 'Authorities',
                               'type_fichier' => Class_IntProfilDonnees::FT_AUTHORITY,
@@ -802,7 +823,7 @@ abstract class AuthoritiesFacetsWithIndexSystemTestCase extends ModelTestCase {
 
 
   protected function _fixtures() {
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 6,
                     'libelle' => 'Mots-clés TESS',
                     'id_thesaurus' => 'MOTS',
@@ -834,7 +855,7 @@ class AuthoritiesFacetsWithIndexSystemAlreadyExistingTest
 
   protected function _fixtures() {
     parent::_fixtures();
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 7,
                     'libelle' => 'Développement local',
                     'id_thesaurus' => 'MOTS0001',
diff --git a/tests/scenarios/Templates/TemplatesAuthorTest.php b/tests/scenarios/Templates/TemplatesAuthorTest.php
index 944d13147a4dddbe9658aca49a4c4a9e8f501320..66225141a258d16b467ba59e1d1b82816ace1ab5 100644
--- a/tests/scenarios/Templates/TemplatesAuthorTest.php
+++ b/tests/scenarios/Templates/TemplatesAuthorTest.php
@@ -23,9 +23,11 @@ require_once('TemplatesTest.php');
 
 
 class TemplatesAuthorEditWidgetTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/widget/edit-widget/id/23/id_profil/72', true);
+
+    $this->dispatch('/admin/widget/edit-widget/id/23/id_profil/72');
   }
 
 
@@ -40,7 +42,6 @@ class TemplatesAuthorEditWidgetTest extends TemplatesIntonationTestCase {
 
 class TemplatesAuthorWidgetTest extends TemplatesIntonationTestCase {
 
-
   public function setUp() {
     parent::setUp();
 
@@ -179,6 +180,7 @@ abstract class TemplatesIntonationWithAuthorTest extends TemplatesIntonationTest
 
 
 class TemplatesAuthorActionsTest extends TemplatesIntonationWithAuthorTest {
+
   public function setUp() {
     parent::setUp();
 
@@ -271,6 +273,7 @@ class TemplatesAuthorActionsTest extends TemplatesIntonationWithAuthorTest {
 
 
 class TemplatesAuthorDisabledBiographyTest extends TemplatesIntonationWithAuthorTest {
+
   public function setUp() {
     parent::setUp();
 
@@ -314,8 +317,6 @@ class TemplatesAuthorDisabledBiographyTest extends TemplatesIntonationWithAuthor
 
 
 class TemplatesAgendaWidgetWithDescriptionLengthTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
@@ -323,7 +324,7 @@ class TemplatesAgendaWidgetWithDescriptionLengthTest extends AbstractControllerT
     Class_AdminVar::set('TEMPLATING', 1);
     ZendAfi_Auth::getInstance()->clearIdentity();
 
-    $profile = $this->fixture('Class_Profil',
+    $profile = $this->fixture(Class_Profil::class,
                               ['id' => 34,
                                'template' => 'MUSCLE'
                               ]);
@@ -342,9 +343,9 @@ class TemplatesAgendaWidgetWithDescriptionLengthTest extends AbstractControllerT
                    'description_length' => 4]);
 
     $this
-      ->onLoaderOfModel('Class_CodifAuteur')
+      ->onLoaderOfModel(Class_CodifAuteur::class)
       ->whenCalled('filterByValidThumbnail')
-      ->answers([$this->fixture('Class_CodifAuteur',
+      ->answers([$this->fixture(Class_CodifAuteur::class,
                                 ['id' => 2408,
                                  'libelle' => 'Victor Hugo'])]);
 
@@ -371,9 +372,7 @@ class TemplatesAgendaWidgetWithDescriptionLengthTest extends AbstractControllerT
 abstract class TemplatesAuthorWidgetRandomTestCase
   extends AbstractControllerTestCase {
 
-  protected
-    $_storm_default_to_volatile = true,
-    $_loader;
+  protected $_loader;
 
   public function setUp() {
     parent::setUp();
@@ -531,4 +530,4 @@ class TemplatesAuthorWidgetRandomWithStartLimitWithUniqueAuthorsTest
   public function pageShouldContains20Auhtors() {
     $this->assertXPathCount('//div[@class="card-title"][contains(text(), "Victor Hugo")]', 20);
   }
-}
\ No newline at end of file
+}