Index: /library/bdm/estim/particles.h
===================================================================
--- /library/bdm/estim/particles.h (revision 1066)
+++ /library/bdm/estim/particles.h (revision 1068)
@@ -28,5 +28,5 @@
     shared_ptr<BM> bm;
 
-    // custom posterior - product of empirical and exact part
+    //! \brief Internal class for custom posterior - product of empirical and exact part
     class eprod_2:public eprod_base {
     protected:
Index: /library/bdm/base/bdmbase.h
===================================================================
--- /library/bdm/base/bdmbase.h (revision 1066)
+++ /library/bdm/base/bdmbase.h (revision 1068)
@@ -694,13 +694,16 @@
         dimc = d;
     }
-    //! Load from structure with elements:
-    //!  \code
-    //! { class = "pdf_offspring",
-    //!   rv = {class="RV", names=(...),}; // RV describing meaning of random variable
-    //!   rvc= {class="RV", names=(...),}; // RV describing meaning of random variable in condition
-    //!   // elements of offsprings
-    //! }
-    //! \endcode
-    //!@}
+
+    /*! Create object from the following structure
+    \code
+    class = 'pdf';
+    --- optional fields ---
+    rv = RV({'names',...},[sizes,...],[times,...]);  % description of the random variable - typically delayed values, time=-1, etc.!    
+    rvc= RV({'names',...},[sizes,...],[times,...]);  % description of the random variable in condition
+    --- inherited fields ---
+    bdm::root::from_setting
+    \endcode
+    */
+    //! @}
     void from_setting ( const Setting &set );
 
Index: /library/bdm/stat/merger.cpp
===================================================================
--- /library/bdm/stat/merger.cpp (revision 1064)
+++ /library/bdm/stat/merger.cpp (revision 1068)
@@ -160,5 +160,5 @@
     vec mea = mean();
 
-// 			cout << sum (w) << "," << w*w << endl;
+//             cout << sum (w) << "," << w*w << endl;
 
     mat Tmp = zeros ( dim, dim );
@@ -174,4 +174,50 @@
 }
 
+
+void merger_base::from_setting ( const Setting& set ) {
+    // get support
+    // find which method to use
+    epdf::from_setting (set);
+    string meth_str;
+    UI::get( meth_str, set, "method", UI::compulsory );
+    if ( meth_str == "arithmetic" )
+        set_method ( ARITHMETIC );
+    else if ( meth_str == "geometric" )
+        set_method ( GEOMETRIC );
+    else if ( meth_str ==  "lognormal" ) {
+        set_method ( LOGNORMAL );
+        UI::get(beta, set, "beta", UI::compulsory );
+    }
+
+
+    string dbg_filename;
+    if ( UI::get ( dbg_filename, set, "dbg_file" ) )
+        set_debug_file( dbg_filename );
+
+}
+
+void merger_base::to_setting  (Setting  &set) const {
+    epdf::to_setting(set);
+
+    UI::save( METHOD, set, "method");
+
+    if( METHOD == LOGNORMAL )
+        UI::save (beta, set, "beta" );
+
+    if( DBG )
+        UI::save ( dbg_file->get_fname(), set, "dbg_file" );
+}
+
+void merger_base::validate() {
+//        bdm_assert ( eSmp._w().length() > 0, "Empty support, use set_support()." );
+//        bdm_assert ( dim == eSmp._samples() ( 0 ).length(), "Support points and rv are not compatible!" );
+    epdf::validate();
+    bdm_assert ( isnamed(), "mergers must be named" );
+}
+
+// DEFAULTS FOR MERGER_BASE
+const MERGER_METHOD merger_base::DFLT_METHOD = LOGNORMAL;
+const double merger_base::DFLT_beta = 1.2;
+
 void merger_mix::merge ( ) {
     if(Npoints<1) {
@@ -190,10 +236,10 @@
     }
 
-    if ( DBG )	*dbg_file << Name ( "Smp_0" ) << Smp_ex;
+    if ( DBG )    *dbg_file << Name ( "Smp_0" ) << Smp_ex;
 
     // Stuff for merging
-    vec lw_src ( Npoints );		// weights of the ith source
-    vec lw_mix ( Npoints );		// weights of the approximating mixture
-    vec lw ( Npoints );			// tmp
+    vec lw_src ( Npoints );        // weights of the ith source
+    vec lw_mix ( Npoints );        // weights of the approximating mixture
+    vec lw ( Npoints );            // tmp
     mat lW = zeros ( Nsources, Npoints ); // array of weights of all sources
     vec vec0 ( 0 );
@@ -285,6 +331,6 @@
                     }
 
-// 					sprintf ( str,"marg%d",niter );
-// 					*dbg << Name ( str ) << lw_src;
+//                     sprintf ( str,"marg%d",niter );
+//                     *dbg << Name ( str ) << lw_src;
 
                 }
@@ -345,5 +391,5 @@
     }
     delete Mpred;
-//		cout << endl;
+//        cout << endl;
 
 }
@@ -359,5 +405,5 @@
 }
 
-void 	merger_mix::to_setting  (Setting  &set) const  {
+void merger_mix::to_setting  (Setting  &set) const  {
     merger_base::to_setting(set);
     UI::save( Ncoms, set, "ncoms");
@@ -371,48 +417,4 @@
 }
 
-void merger_base::from_setting ( const Setting& set ) {
-    // get support
-    // find which method to use
-    epdf::from_setting (set);
-    string meth_str;
-    UI::get( meth_str, set, "method", UI::compulsory );
-    if ( meth_str == "arithmetic" )
-        set_method ( ARITHMETIC );
-    else if ( meth_str == "geometric" )
-        set_method ( GEOMETRIC );
-    else if ( meth_str ==  "lognormal" ) {
-        set_method ( LOGNORMAL );
-        UI::get(beta, set, "beta", UI::compulsory );
-    }
-
-
-    string dbg_filename;
-    if ( UI::get ( dbg_filename, set, "dbg_file" ) )
-        set_debug_file( dbg_filename );
-
-}
-
-void merger_base::to_setting  (Setting  &set) const {
-    epdf::to_setting(set);
-
-    UI::save( METHOD, set, "method");
-
-    if( METHOD == LOGNORMAL )
-        UI::save (beta, set, "beta" );
-
-    if( DBG )
-        UI::save ( dbg_file->get_fname(), set, "dbg_file" );
-}
-
-void merger_base::validate() {
-//		bdm_assert ( eSmp._w().length() > 0, "Empty support, use set_support()." );
-//		bdm_assert ( dim == eSmp._samples() ( 0 ).length(), "Support points and rv are not compatible!" );
-    epdf::validate();
-    bdm_assert ( isnamed(), "mergers must be named" );
-}
-
-// DEFAULTS FOR MERGER_BASE
-const MERGER_METHOD merger_base::DFLT_METHOD = LOGNORMAL;
-const double merger_base::DFLT_beta = 1.2;
 // DEFAULTS FOR MERGER_MIX
 const int merger_mix::DFLT_Ncoms = 10;
Index: /library/bdm/stat/emix.cpp
===================================================================
--- /library/bdm/stat/emix.cpp (revision 1064)
+++ /library/bdm/stat/emix.cpp (revision 1068)
@@ -133,5 +133,5 @@
 
 
-void 	emix::validate () {
+void     emix::validate () {
     emix_base::validate();
     dim = Coms ( 0 )->dimension();
@@ -143,9 +143,9 @@
     double res = 0.0;
     for ( i = pdfs.length() - 1; i >= 0; i-- ) {
-        /*			if ( pdfs(i)->_rvc().count() >0) {
-        				pdfs ( i )->condition ( dls ( i )->get_cond ( val,cond ) );
-        			}
-        			// add logarithms
-        			res += epdfs ( i )->evallog ( dls ( i )->pushdown ( val ) );*/
+        /*            if ( pdfs(i)->_rvc().count() >0) {
+                        pdfs ( i )->condition ( dls ( i )->get_cond ( val,cond ) );
+                    }
+                    // add logarithms
+                    res += epdfs ( i )->evallog ( dls ( i )->pushdown ( val ) );*/
         res += pdfs ( i )->evallogcond (
                    dls ( i )->pushdown ( val ),
@@ -198,5 +198,5 @@
     set_elements ( temp_array );
 }
-void 	mprod::to_setting  (Setting  &set) const {
+void     mprod::to_setting  (Setting  &set) const {
     pdf::to_setting(set);
     UI::save( pdfs, set, "pdfs");
@@ -243,5 +243,5 @@
 }
 
-void 	mmix::to_setting  (Setting  &set) const {
+void     mmix::to_setting  (Setting  &set) const {
     pdf::to_setting(set);
     UI::save( Coms, set, "pdfs");
Index: /library/bdm/stat/exp_family.h
===================================================================
--- /library/bdm/stat/exp_family.h (revision 1066)
+++ /library/bdm/stat/exp_family.h (revision 1068)
@@ -124,5 +124,5 @@
 };
 
-/*! Dirac delta density with predefined transformation
+/*! \brief Dirac delta density with predefined transformation
 
 Density of the type:\f[ f(x_t | y_t) = \delta (x_t - g(y_t)) \f]
@@ -141,4 +141,14 @@
         return std::numeric_limits< double >::max();
     }
+
+    /*! Create object from the following structure
+
+    \code
+    class = 'mgdirac';
+    g = function bdm::fnc;      % any offspring of fnc, bdm::fnc::from_setting
+    --- inherited fields ---
+    bdm::pdf::from_setting
+    \endcode
+    */
     void from_setting(const Setting& set);
     void to_setting(Setting &set) const;
@@ -666,5 +676,6 @@
 UIREGISTER ( eBeta );
 
-/*! Random Walk on Dirichlet
+/*! \brief Random Walk on Dirichlet
+
 Using simple assignment
  \f[ \beta = rvc / k + \beta_c \f]
@@ -676,5 +687,4 @@
  By default is it set to 0.1;
 */
-
 class mDirich: public pdf_internal<eDirich> {
 protected:
@@ -690,14 +700,21 @@
         _beta =  val / k + betac;
     };
-    /*! Create Dirichlet random walk
-    \f[ f(rv|rvc) = Di(rvc*k) \f]
-    from structure
+
+    /*! Create object from the following structure
     \code
     class = 'mDirich';
-    k = 1;                      // multiplicative constant k
+    k = 1;                      % multiplicative constant k
     --- optional ---
-    rv = RV({'name'},size)      // description of RV
-    beta0 = [];                 // initial value of beta
-    betac = [];                 // initial value of beta
+    beta0 = [...];              % initial values of beta
+    betac = [...];              % initial values of beta stabilizing coefficients
+    --- inherited fields ---
+    bdm::pdf::from_setting
+    \endcode
+    fulfilling form  \f[ f(rv|rvc) = Di(rvc*k) \f]
+
+    If the optional fields are not given, they will be filled as follows:
+    \code
+    beta0 = [1,1,1,...];                
+    betac = 0.1 * [1,1,1,...];
     \endcode
     */
@@ -709,4 +726,5 @@
 
 /*! \brief Random Walk with vector Beta distribution
+
 Using simple assignment
 \f{eqnarray*}
@@ -733,15 +751,22 @@
     };
 
-    /*! Create Beta random walk
-    \f[ f(rv|rvc) = \prod Beta(rvc,k) \f]
-    from structure
+    /*! Create object from the following structure
     \code
     class = 'mBeta';
-    k = 1;                      // multiplicative constant k
-    --- optional ---
-    rv = RV({'name'},size)      // description of RV
-    beta  = [];                 // initial value of beta
-    betac = [];                 // initial value of beta stabilizing constant
+    k = [...];          % vector of multiplicative constants k
+    --- optional fields ---
+    beta  = [...];      % initial values of beta
+    betac = [...];      % initial values of beta stabilizing constants
+    --- inherited fields ---
+    bdm::pdf::from_setting
     \endcode
+    fulfilling form \f[ f(rv|rvc) = \prod Beta(rvc,k) \f]
+
+    If the optional fields are not given, they will be filled as follows:
+    \code
+    beta  = [1,1,1,...];
+    betac = 0.1 * [1,1,1,...];
+    \endcode
+    
     */
     void from_setting ( const Setting &set );
@@ -928,6 +953,5 @@
 */
 
-//!  Uniform distributed density on a rectangular support
-
+//! \brief Uniform distributed density on a rectangular support
 class euni: public epdf {
 protected:
@@ -976,13 +1000,18 @@
         return ( pow ( high, 2 ) + pow ( low, 2 ) + elem_mult ( high, low ) ) / 3.0;
     }
-    /*! Create Uniform density
-    \f[ f(rv) = U(low,high) \f]
-    from structure
+
+
+     /*! Create object from the following structure
      \code
+    
      class = 'euni'
-     high = [...];          // vector of upper bounds
-     low = [...];           // vector of lower bounds
-     rv = RV({'name'});     // description of RV
+     high = [...];          % vector of upper bounds
+     low = [...];           % vector of lower bounds     
+      rv = RV({'names',...},[sizes,...],[times,...]);   % description of RV
+     --- inherited fields ---
+     bdm::epdf::from_setting
      \endcode
+
+     fulfilling form \f[ f(rv) = U(low,high) \f]
      */
     void from_setting ( const Setting &set );
@@ -1003,5 +1032,14 @@
         iepdf.set_parameters ( mea - delta, mea + delta );
     }
-    //! load from
+
+    /*! Create object from the following structure
+    \code
+    class = 'mguni';
+    mean = function bdm::fnc;       % any offspring of fnc, bdm::fnc::from_setting
+    delta = [...];                  % distance from mean to both sides
+    --- inherited fields ---
+    bdm::pdf::from_setting
+    \endcode
+    */
     void from_setting ( const Setting &set ) {
         pdf::from_setting ( set ); //reads rv and rvc
@@ -1204,5 +1242,5 @@
 
 
-/*! (Approximate) Student t density with linear function of mean value
+/*! \brief (Approximate) Student t density with linear function of mean value
 
 The internal epdf of this class is of the type of a Gaussian (enorm).
@@ -1271,14 +1309,14 @@
         _beta = k / val;
     };
-    /*! Create Gamma density with conditional mean value
-    \f[ f(rv|rvc) = \Gamma(k, k/rvc) \f]
-    from structure
+
+    /*! Create object from the following structure
     \code
-      class = 'mgamma';
-      beta = [...];          // vector of initial alpha
-      k = 1.1;               // multiplicative constant k
-      rv = RV({'name'})      // description of RV
-      rvc = RV({'name'})     // description of RV in condition
-     \endcode
+    class = 'mgamma';    
+    beta = [...];      % vector of initial beta
+    k = x;             %  multiplicative scalar constant k
+    --- inherited fields ---
+    bdm::pdf::from_setting
+    \endcode
+    fulfilling form \f[ f(rv|rvc) = \Gamma(k, k/rvc) \f]
     */
     void from_setting ( const Setting &set );
@@ -1340,5 +1378,4 @@
     };
 };
-
 
 /*!
@@ -1369,5 +1406,5 @@
     };
 
-    void     validate () {
+    void validate () {
         mgamma::validate();
         dimc = dimension();
@@ -1420,16 +1457,14 @@
     };
 
-
-    /*! Create inverse-Gamma density with conditional mean value
-    \f[ f(rv|rvc) = i\Gamma(k, k/(rvc^l \circ ref^{(1-l)}) \f]
-    from structure
+    /*! Create object from the following structure
     \code
     class = 'migamma_ref';
-    ref = [1e-5; 1e-5; 1e-2 1e-3];            // reference vector
-    l = 0.999;                                // constant l
-    k = 0.1;                                  // constant k
-    rv = RV({'name'})                         // description of RV
-    rvc = RV({'name'})                        // description of RV in condition
+    ref = [...];           % reference vector
+    l = [];                % constant scalar l
+    k = [];                % constant scalar k    
+    --- inherited fields ---
+    bdm::migamma::from_setting
     \endcode
+    fulfilling form \f[ f(rv|rvc) = i\Gamma(k, k/(rvc^l \circ ref^{(1-l)}) \f]
      */
     void from_setting ( const Setting &set );
@@ -1442,6 +1477,5 @@
 SHAREDPTR ( migamma_ref );
 
-/*! Log-Normal probability density
- only allow diagonal covariances!
+/*! \brief Log-Normal probability density - it allows only diagonal covariances!
 
 Density of the form \f$ \log(x)\sim \mathcal{N}(\mu,\sigma^2) \f$ , i.e.
@@ -1499,14 +1533,13 @@
     };
 
-    /*! Create logNormal random Walk
-    \f[ f(rv|rvc) = log\mathcal{N}( \log(rvc)-0.5\log(k^2+1), k I) \f]
-    from structure
+    /*! Create object from the following structure
     \code
     class = 'mlognorm';
-    k   = 0.1;               // "variance" k
-    mu0 = 0.1;               // Initial value of mean
-    rv  = RV({'name'})       // description of RV
-    rvc = RV({'name'})       // description of RV in condition
+    k   = [];               % "variance" k
+    mu0 = [];               % initial value of mean
+    --- inherited fields ---
+    bdm::pdf_internal<elognorm>::from_setting
     \endcode
+    fulfilling form \f[ f(rv|rvc) = log\mathcal{N}( \log(rvc)-0.5\log(k^2+1), k I) \f]
     */
     void from_setting ( const Setting &set );
@@ -1518,6 +1551,5 @@
 SHAREDPTR ( mlognorm );
 
-/*! inverse Wishart density defined on Choleski decomposition
-
+/*! \brief Inverse Wishart density defined on Choleski decomposition
 */
 class eWishartCh : public epdf {
Index: /library/bdm/stat/merger.h
===================================================================
--- /library/bdm/stat/merger.h (revision 1064)
+++ /library/bdm/stat/merger.h (revision 1068)
@@ -25,5 +25,5 @@
 
 /*!
-@brief Base class for general combination of pdfs on discrete support
+@brief Base class (interface) for for general combination of pdfs on discrete support
 
 Mixtures of Gaussian densities are used internally. Switching to other densities should be trivial.
@@ -42,5 +42,4 @@
 For merging of more general cases, use offsprings merger_mix and merger_grid.
 */
-
 class merger_base : public epdf {
 protected:
@@ -168,5 +167,20 @@
     }
 
-    //! load from setting
+
+    }
+
+    /*! Create object from the following structure
+
+    \code
+    class = 'merger_base';
+    method = 'arithmetic' or 'geometric' or 'lognormal';   % name of the model used for merging 
+    --- compulsory only for lognormal merging model ---
+    beta = x;                                              % scalar prior on the log-normal merging model
+    --- optional fields ---
+    dbg_file = '...';                                      % name of the file to store debug informations
+    --- inherited fields ---
+    bdm::epdf::from_setting
+    \endcode
+    */
     void from_setting ( const Setting& set );
 
@@ -179,5 +193,5 @@
 SHAREDPTR ( merger_base );
 
-//! Merger using importance sampling with mixture proposal density
+//! \brief Merger using importance sampling with mixture proposal density
 class merger_mix : public merger_base {
 protected:
@@ -249,11 +263,29 @@
         return tmp;
     }
-    //! from_settings
+    /*! Create object from the following structure
+
+    \code
+    class = 'merger_mix';
+    --- optional fields ---
+    ncoms = [];        % number of components in a mixture
+    effss_coef = [];   % coefficient of resampling from interval [0,1]
+    stop_niter = [];   % number of interations
+    --- inherited fields ---
+    bdm::merger_base::from_setting
+    \endcode    
+    If the optional fields are not given, they will be filled as follows:
+    \code
+    ncoms = 10;       
+    effss_coef = 0.9;  
+    stop_niter = 10;  
+    \endcode
+
+    */
     void from_setting ( const Setting& set );
-    void 	to_setting  (Setting  &set) const;
+
+    void to_setting  (Setting  &set) const;
     void validate();
 
     //! @}
-
 };
 UIREGISTER ( merger_mix );
Index: /library/bdm/stat/emix.h
===================================================================
--- /library/bdm/stat/emix.h (revision 1066)
+++ /library/bdm/stat/emix.h (revision 1068)
@@ -24,4 +24,5 @@
 
 /*! \brief Class representing ratio of two densities
+
 which arise e.g. by applying the Bayes rule.
 It represents density in the form:
@@ -266,15 +267,14 @@
     }
 
-    //! Load from structure with elements:
-    //!  \code
-    //! { class='mprod';
-    //!   pdfs = (..., ...);     // list of pdfs in the order of chain rule
-    //! }
+    //! Create object from the following structure
+    //! \code
+    //! class='mprod';
+    //! pdfs = { list of bdm::pdf };          % list of bdm::pdf offsprings stored in the order of chain rule, bdm::pdf::from_setting
+    //! --- inherited fields ---
+    //! bdm::pdf::from_setting
     //! \endcode
     //!@}
     void from_setting ( const Setting &set ) ;
-    void     to_setting  (Setting  &set) const;
-
-
+    void to_setting  (Setting  &set) const;    
 };
 UIREGISTER ( mprod );
@@ -370,5 +370,5 @@
 UIREGISTER(eprod);
 
-//! \brief Internal class similar to eprod - factors are external pointers. To be used only internally!  
+//! \brief Internal class similar to eprod - factors are external pointers. To be used internally!  
 class eprod_internal: public eprod_base {
 protected:
@@ -409,12 +409,23 @@
     vec samplecond ( const vec &cond );
 
-    //! Load from structure with elements:
-    //!  \code
-    //! { class='mmix';
-    //!   pdfs = (..., ...);     // list of pdfs in the mixture
-    //!   weights = ( 0.5, 0.5 ); // weights of pdfs in the mixture
     //! }
     //! \endcode
     //!@}
+   
+    /*! Create object from the following structure
+    \code
+    class = 'mmix';
+    pdfs = { list of components bdm::pdf };          % list of pdf offsprings, bdm::pdf::from_setting
+    --- optional fields ---
+    weights = [...];                                 % weights of pdfs in the mixture
+    --- inherited fields ---
+    bdm::pdf::from_setting
+    \endcode
+    \endcode
+    If the optional fields are not given, they will be filled as follows:
+    \code
+    weights = 1/n * [1,1,1,...];
+    \endcode
+    */
     void from_setting ( const Setting &set );
     void     to_setting  (Setting  &set) const;
@@ -430,4 +441,6 @@
     Array<vec_from_vec> bm_yt;
     Array<vec_from_2vec> bm_cond;
+
+    //! \brief Internal class
     class eprod_bm : public eprod_base {
         ProdBMBase & pb;
Index: /library/bdm/stat/exp_family.cpp
===================================================================
--- /library/bdm/stat/exp_family.cpp (revision 1064)
+++ /library/bdm/stat/exp_family.cpp (revision 1068)
@@ -134,6 +134,6 @@
 
     double m = nu - nPsi - dimx - 1;
-#define	log2  0.693147180559945286226763983
-#define	logpi 1.144729885849400163877476189
+#define    log2  0.693147180559945286226763983
+#define    logpi 1.144729885849400163877476189
 #define log2pi 1.83787706640935
 #define Inf std::numeric_limits<double>::infinity()
@@ -149,5 +149,5 @@
                  - 0.5 * dimx * ( m * log2 + 0.5 * ( dimx - 1 ) * log2pi )  - lg;
 
-//	bdm_assert_debug ( ( ( -nkG - nkW ) > -Inf ) && ( ( -nkG - nkW ) < Inf ), "ARX improper" );
+//    bdm_assert_debug ( ( ( -nkG - nkW ) > -Inf ) && ( ( -nkG - nkW ) < Inf ), "ARX improper" );
     if ( -nkG - nkW == Inf ) {
         cout << "??" << endl;
@@ -186,12 +186,12 @@
         M = iLsub * Lpsi;
     }
-    /*	if ( 0 ) { // test with Peterka
-    		mat VF = V.to_mat();
-    		mat Vf = VF ( 0, dimx - 1, 0, dimx - 1 );
-    		mat Vzf = VF ( dimx, end, 0, dimx - 1 );
-    		mat VZ = VF ( dimx, end, dimx, end );
-
-    		mat Lam2 = Vf - Vzf.T() * inv ( VZ ) * Vzf;
-    	}*/
+    /*    if ( 0 ) { // test with Peterka
+            mat VF = V.to_mat();
+            mat Vf = VF ( 0, dimx - 1, 0, dimx - 1 );
+            mat Vzf = VF ( dimx, end, 0, dimx - 1 );
+            mat VZ = VF ( dimx, end, dimx, end );
+
+            mat Lam2 = Vf - Vzf.T() * inv ( VZ ) * Vzf;
+        }*/
 }
 
@@ -203,5 +203,5 @@
 
         mat Lsub = L ( 1, end, 1, end );
-//		mat Dsub = diag ( D ( 1, end ) );
+//        mat Dsub = diag ( D ( 1, end ) );
 
         ldmat LD ( inv ( Lsub ).T(), 1.0 / D ( 1, end ) );
@@ -715,5 +715,5 @@
 }
 
-void 	euni::to_setting  (Setting  &set) const {
+void     euni::to_setting  (Setting  &set) const {
     epdf::to_setting ( set );
     UI::save ( high, set, "high" );
@@ -731,10 +731,11 @@
     pdf::from_setting(set);
     g=UI::build<fnc>(set,"g",UI::compulsory);
-    validate();
-}
+}
+
 void mgdirac::to_setting(Setting &set) const {
     pdf::to_setting(set);
     UI::save(g.get(), set, "g");
 }
+
 void mgdirac::validate() {
     pdf::validate();
