diff --git a/src/serial/gitter_sti.h b/src/serial/gitter_sti.h
index 1a2c2ab99d72bcc2e2356030daf483796e570aee..a4faf75c53999616ef34b27231d42277e41fbc7b 100644
--- a/src/serial/gitter_sti.h
+++ b/src/serial/gitter_sti.h
@@ -882,7 +882,8 @@ public :
       enum rule_enum { crs=-1, nosplit=1, e01, e12, e20, e23, e30, e31, iso8 };
       typedef signed char rule_t;
 
-      TetraRule ( const rule_t & );
+      explicit TetraRule ( const rule_t & );
+      TetraRule ( const int );
       TetraRule ( const rule_enum & = nosplit) ;
       operator rule_t () const;
       inline bool isValid () const ;
@@ -896,7 +897,8 @@ public :
       enum rule_enum { crs = -1, nosplit = 1, iso8 };
       typedef signed char rule_t;
 
-      HexaRule ( const rule_t & );
+      explicit HexaRule ( const rule_t & );
+      HexaRule ( const int );
       HexaRule ( const rule_enum & = nosplit);
       operator rule_t () const;
       inline bool isValid () const ;
@@ -2951,11 +2953,21 @@ Gitter::Geometric::hface4::isInteriorLeaf() const
 
 inline Gitter :: Geometric :: TetraRule :: TetraRule ( const rule_t &r )
 : _r( r )
-{}
+{
+  assert( isValid() );
+}
+
+inline Gitter :: Geometric :: TetraRule :: TetraRule ( const int r )
+: _r( (rule_t) r )
+{
+  assert( isValid() );
+}
 
 inline Gitter :: Geometric :: TetraRule :: TetraRule ( const rule_enum &r )
 : _r( r )
-{}
+{
+  assert( isValid() );
+}
 
 inline Gitter :: Geometric :: TetraRule :: operator rule_t () const
 {
@@ -3312,11 +3324,21 @@ inline int Gitter :: Geometric :: Periodic4 :: preCoarsening () {
 
 inline Gitter :: Geometric :: HexaRule :: HexaRule ( const rule_t &r )
 : _r( r )
-{}
+{
+  assert( isValid() );
+}
+
+inline Gitter :: Geometric :: HexaRule :: HexaRule ( const int r )
+: _r( (rule_t) r )
+{
+  assert( isValid() );
+}
 
 inline Gitter :: Geometric :: HexaRule :: HexaRule ( const rule_enum &r )
 : _r( r )
-{}
+{
+  assert( isValid() );
+}
 
 inline Gitter :: Geometric :: HexaRule :: operator rule_t () const
 {