Index: library/bdm/base/bdmbase.h
===================================================================
--- library/bdm/base/bdmbase.h (revision 760)
+++ library/bdm/base/bdmbase.h (revision 766)
@@ -108,6 +108,9 @@
 
 	//! auxiliary function used in constructor
-	void init ( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times );
-	int init ( const string &name, int size );
+	void init( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times );
+
+	//! auxiliary function assigning unique integer index related to the passed name and size of the random variable
+	int assign_id( const string &name, int size );
+
 	//! Private constructor from IDs, potentially dangerous since all ids must be valid!
 	//! dummy is there to prevent confusion with RV(" string");
@@ -319,21 +322,14 @@
 
 	//! log this vector
-	virtual void log_vector ( int id, const vec &v ) {
-		bdm_error ( "Not implemented" );
-	};
+	virtual void log_vector ( int id, const vec &v ) = 0;
 
 	virtual Setting & log_to_setting ( int id ) {
 		return settings ( id )->add ( Setting::TypeGroup );
 	}
-
 	//! log this double
-	virtual void logit ( int id, const double &d ) {
-		bdm_error ( "Not implemented" );
-	};
+	virtual void logit ( int id, const double &d ) = 0;
 
 	//! Shifts storage position for another time step.
-	virtual void step() {
-		bdm_error ( "Not implemneted" );
-	};
+	virtual void step() = 0;
 
 	//! Finalize storing information
@@ -385,4 +381,5 @@
 	//!dimension of the condition
 	int dimc;
+
 	//! random variable in condition
 	RV rvc;
@@ -402,8 +399,4 @@
 	pdf ( const pdf &m ) : dimc ( m.dimc ), rvc ( m.rvc ), dim ( m.dim ), rv ( m.rv ) { }
 
-	//! copy of the current object - make sure to implement
-	virtual pdf* _copy_() const {
-		return new pdf ( *this );
-	}
 	//!@}
 
@@ -412,8 +405,5 @@
 
 	//! Returns a sample from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv
-	virtual vec samplecond ( const vec &cond ) {
-		bdm_error ( "Not implemented" );
-		return vec();
-	}
+	virtual vec samplecond ( const vec &cond ) = 0;
 
 	//! Returns \param N samples from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv
@@ -421,8 +411,5 @@
 
 	//! Shortcut for conditioning and evaluation of the internal epdf. In some cases,  this operation can be implemented efficiently.
-	virtual double evallogcond ( const vec &yt, const vec &cond ) {
-		bdm_error ( "Not implemented" );
-		return 0.0;
-	}
+	virtual double evallogcond ( const vec &yt, const vec &cond ) = 0;
 
 	//! Matrix version of evallogcond
@@ -521,7 +508,4 @@
 	}
 	
-	epdf* _copy_() const {
-		return new epdf ( *this );
-	}
 	//!@}
 
@@ -530,8 +514,5 @@
 
 	//! Returns a sample, \f$ x \f$ from density \f$ f_x()\f$
-	virtual vec sample() const {
-		bdm_error ( "not implemented" );
-		return vec();
-	}
+	virtual vec sample() const = 0;
 
 	//! Returns N samples, \f$ [x_1 , x_2 , \ldots \ \f$  from density \f$ f_x(rv)\f$
@@ -540,9 +521,6 @@
 	//! Compute log-probability of argument \c val
 	//! In case the argument is out of suport return -Infinity
-	virtual double evallog ( const vec &val ) const {
-		bdm_error ( "not implemented" );
-		return 0.0;
-	}
-
+	virtual double evallog ( const vec &val ) const = 0;
+	
 	//! Compute log-probability of multiple values argument \c val
 	virtual vec evallog_mat ( const mat &Val ) const;
@@ -557,15 +535,8 @@
 	virtual shared_ptr<epdf> marginal ( const RV &rv ) const;
 
-	//! return expected value
-	virtual vec mean() const {
-		bdm_error ( "not implemneted" );
-		return vec();
-	}
+	virtual vec mean() const = 0;
 
 	//! return expected variance (not covariance!)
-	virtual vec variance() const {
-		bdm_error ( "not implemneted" );
-		return vec();
-	}
+	virtual vec variance() const = 0;
 
 	//! Lower and upper bounds of \c percentage % quantile, returns mean-2*sigma as default
@@ -639,7 +610,5 @@
 	//! Update \c iepdf so that it represents this pdf conditioned on \c rvc = cond
 	//! This function provides convenient reimplementation in offsprings
-	virtual void condition ( const vec &cond ) {
-		bdm_error ( "Not implemented" );
-	}
+	virtual void condition ( const vec &cond ) = 0;
 
 	//!access function to iepdf
@@ -942,26 +911,17 @@
 	}
 	//! Returns full vector of observed data=[output, input]
-	virtual void getdata ( vec &dt ) const {
-		bdm_error ( "abstract class" );
-	}
+	virtual void getdata ( vec &dt ) const = 0;
+
 	//! Returns data records at indeces.
-	virtual void getdata ( vec &dt, const ivec &indeces ) {
-		bdm_error ( "abstract class" );
-	}
-
-	//! Accepts action variable and schedule it for application.
-	virtual void write ( const vec &ut ) {
-		bdm_error ( "abstract class" );
-	}
+	virtual void getdata ( vec &dt, const ivec &indeces ) = 0;
+
+	//! Accepts action variable and schedule it for application.	
+	virtual void write ( const vec &ut ) = 0;
 
 	//! Accepts action variables at specific indeces
-	virtual void write ( const vec &ut, const ivec &indeces ) {
-		bdm_error ( "abstract class" );
-	}
+	virtual void write ( const vec &ut, const ivec &indeces ) = 0;
 
 	//! Moves from \f$ t \f$ to \f$ t+1 \f$, i.e. perfroms the actions and reads response of the system.
-	virtual void step() {
-		bdm_error ( "abstract class" );
-	}
+	virtual void step() = 0;
 
 	//! Register DS for logging into logger L
@@ -1033,8 +993,6 @@
 //	BM ( const BM &B ) :  yrv ( B.yrv ), dimy(B.dimy), rvc ( B.rvc ),dimc(B.dimc), ll ( B.ll ), evalll ( B.evalll ) {}
 	//! \brief Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually!
-	//! Prototype: \code BM* _copy_() const {return new BM(*this);} \endcode
-	virtual BM* _copy_() const {
-		return NULL;
-	};
+	//! Prototype: \code BM* _copy() const {return new BM(*this);} \endcode
+	virtual BM* _copy() const { 		return NULL; 	}; // TODO NEBUDE TU TAKY LEPSI BDM_ERROR??!
 	//!@}
 
@@ -1054,8 +1012,5 @@
 	//! This function evaluates only \f$ y_t \f$, condition is assumed to be the last used in bayes().
 	//! See bdm::BM::predictor for conditional version.
-	virtual double logpred ( const vec &yt ) const {
-		bdm_error ( "Not implemented" );
-		return 0.0;
-	}
+	virtual double logpred ( const vec &yt ) const = 0;
 
 	//! Matrix version of logpred
@@ -1069,13 +1024,9 @@
 
 	//!Constructs a predictive density \f$ f(d_{t+1} |d_{t}, \ldots d_{0}) \f$
-	virtual epdf* epredictor() const {
-		bdm_error ( "Not implemented" );
-		return NULL;
-	};
+	virtual epdf* epredictor() const = 0;
+
 	//!Constructs conditional density of 1-step ahead predictor \f$ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) \f$
-	virtual pdf* predictor() const {
-		bdm_error ( "Not implemented" );
-		return NULL;
-	};
+	virtual pdf* predictor() const = 0;
+
 	//!@}
 
Index: library/bdm/base/datasources.h
===================================================================
--- library/bdm/base/datasources.h (revision 738)
+++ library/bdm/base/datasources.h (revision 766)
@@ -129,4 +129,10 @@
 	}
 
+	//! Accepts action variable and schedule it for application.	
+	virtual void write ( const vec &ut ) NOT_IMPLEMENTED_VOID;
+		
+	//! Accepts action variables at specific indeces
+	virtual void write ( const vec &ut, const ivec &indeces ) NOT_IMPLEMENTED_VOID;
+
 	/*!
 	\code
@@ -182,4 +188,9 @@
 	}
 
+
+	//! Returns data records at indeces.
+	virtual void getdata ( vec &dt, const ivec &indeces ) NOT_IMPLEMENTED_VOID;
+
+
 	/*!
 	\code
@@ -353,4 +364,6 @@
 	}
 
+	virtual void write ( const vec &ut, const ivec &indeces ) NOT_IMPLEMENTED_VOID;
+
 	/*! UI for stateDS
 
Index: library/bdm/base/loggers.cpp
===================================================================
--- library/bdm/base/loggers.cpp (revision 737)
+++ library/bdm/base/loggers.cpp (revision 766)
@@ -48,5 +48,4 @@
 
 void memlog::from_setting ( const Setting &set ) {
-	// TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK?
 	UI::get ( maxlen,  set, "maxlen", UI::compulsory );
 	UI::get ( filename, set, "filename" );
@@ -174,5 +173,4 @@
 
 void dirfilelog::from_setting ( const Setting &set ) {
-	// TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK?
 	dirname = ( const char* ) set["dirname"];
 	maxlen = set["maxlen"];
Index: library/bdm/base/loggers.h
===================================================================
--- library/bdm/base/loggers.h (revision 737)
+++ library/bdm/base/loggers.h (revision 766)
@@ -78,6 +78,4 @@
 	/*! \brief UI for memlog
 
-	TODO dat tam kam patri, a to celej blok
-
 	\code
 	logger = {
@@ -130,6 +128,4 @@
 	/*! \brief UI for stdlog
 
-	TODO dat tam kam patri, a to celej blok
-
 	\code
 	logger = {
@@ -140,5 +136,4 @@
 	void from_setting ( const Setting &set ) {
 	}
-
 };
 UIREGISTER ( stdlog );
Index: library/bdm/base/bdmbase.cpp
===================================================================
--- library/bdm/base/bdmbase.cpp (revision 746)
+++ library/bdm/base/bdmbase.cpp (revision 766)
@@ -27,5 +27,5 @@
 };
 
-int RV::init ( const string &name, int size ) {
+int RV::assign_id( const string &name, int size ) {
 	//Refer
 	int id;
@@ -86,5 +86,5 @@
 	int id;
 	for ( int i = 0; i < len; i++ ) {
-		id = init ( in_names ( i ), in_sizes ( i ) );
+		id = assign_id ( in_names ( i ), in_sizes ( i ) );
 		ids ( i ) = id;
 	}
@@ -100,5 +100,4 @@
 
 bool RV::add ( const RV &rv2 ) {
-	// TODO
 	if ( rv2.len > 0 ) { //rv2 is nonempty
 		ivec ind = rv2.findself ( *this ); //should be -1 all the time
@@ -146,13 +145,8 @@
 }
 
-shared_ptr<pdf> epdf::condition ( const RV &rv ) const {
-	bdm_warning ( "Not implemented" );
-	return shared_ptr<pdf>();
-}
-
-shared_ptr<epdf> epdf::marginal ( const RV &rv ) const {
-	bdm_warning ( "Not implemented" );
-	return shared_ptr<epdf>();
-}
+shared_ptr<pdf> epdf::condition ( const RV &rv ) const NOT_IMPLEMENTED( shared_ptr<pdf>() );
+
+
+shared_ptr<epdf> epdf::marginal ( const RV &rv ) const NOT_IMPLEMENTED( shared_ptr<epdf>() );
 
 mat epdf::sample_mat ( int N ) const {
