diff --git a/GeoModelTools/GeoModelXMLParser/GeoModelXMLParser/XMLHandler.h b/GeoModelTools/GeoModelXMLParser/GeoModelXMLParser/XMLHandler.h
index 04cc2485c216414ef4e1ad07b85ffef85fb84007..ae967835b368d6f7c54546a26615e9599e36c29c 100644
--- a/GeoModelTools/GeoModelXMLParser/GeoModelXMLParser/XMLHandler.h
+++ b/GeoModelTools/GeoModelXMLParser/GeoModelXMLParser/XMLHandler.h
@@ -17,59 +17,68 @@ class XMLHandlerStore;
 
 class XMLHandler {
 public:
-	XMLHandler(std::string n);
-	virtual ~XMLHandler() {}
-	std::string GetName() {return m_name;}
-	virtual void ElementHandle()=0;
-	virtual void Handle(xercesc::DOMNode *t)
-	{
-		SetCurrentElement(t);
-		ElementHandle();
-	}
-	void StopLoop(bool);
-	bool IsLoopToBeStopped();
-	virtual void postLoopHandling() {;}
+     XMLHandler(const std::string& n);
+     virtual ~XMLHandler() {}
+     const std::string& GetName() const {return m_name;}
+     virtual void ElementHandle()=0;
+     virtual void Handle(xercesc::DOMNode *t)
+     {
+          SetCurrentElement(t);
+          ElementHandle();
+     }
+     void StopLoop(bool);
+     bool IsLoopToBeStopped() const;
+     virtual void postLoopHandling() {;}
 protected:
-	std::string m_name;
-	bool m_stopLoop;
+     std::string m_name;
+     bool m_stopLoop{false};
 
-	static xercesc::DOMNode *s_currentElement;
-	static void SetCurrentElement(xercesc::DOMNode *t) {s_currentElement=t;}
-	static xercesc::DOMNode *GetCurrentElement() {return s_currentElement;}
+     static xercesc::DOMNode *s_currentElement;
+     static void SetCurrentElement(xercesc::DOMNode *t) {s_currentElement=t;}
+     static xercesc::DOMNode *GetCurrentElement() {return s_currentElement;}
 
-	bool isAttribute(const std::string) const;
+     bool isAttribute(const std::string& attributeName) const;
 
-	std::string getAttribute(const std::string, bool&) const;
-	std::string getAttributeAsString(const std::string) const;
-	double getAttributeAsDouble(const std::string) const;
-	float getAttributeAsFloat(const std::string) const;
-	int getAttributeAsInt(const std::string) const;
-	long getAttributeAsLong(const std::string) const;
-	std::vector<double> getAttributeAsVector(const std::string) const;
-	std::vector<int> getAttributeAsIntVector(const std::string) const;
-	std::string getAttributeAsString(const std::string, bool&) const;
-	double getAttributeAsDouble(const std::string, bool&) const;
-  	float getAttributeAsFloat(const std::string, bool&) const;
-	int getAttributeAsInt(const std::string, bool&) const;
-  	long getAttributeAsLong(const std::string, bool&) const;
-	std::vector<double> getAttributeAsVector(const std::string, bool&) const;
-	std::vector<int> getAttributeAsIntVector(const std::string, bool&) const;
-	std::string getAttributeAsString(const std::string, const std::string) const;
-	double getAttributeAsDouble(const std::string, const double) const;
-  	float getAttributeAsFloat(const std::string, const float) const;
-	int getAttributeAsInt(const std::string, const int) const;
-  	long getAttributeAsLong(const std::string, const long) const;
-	std::vector<double> getAttributeAsVector(const std::string, const std::vector<double>) const;
-	std::vector<int> getAttributeAsIntVector(const std::string, const std::vector<int>) const;
-	static bool s_printFlag;
+     std::string getAttribute(const std::string& attributeName, bool& attrIsPresent) const;
+     std::string getAttributeAsString(const std::string& attributeName) const;
+     double getAttributeAsDouble(const std::string& attributeName) const;
+     float getAttributeAsFloat(const std::string& attributeName) const;
+     int getAttributeAsInt(const std::string& attributeName) const;
+     long getAttributeAsLong(const std::string& attributeName) const;
+     std::vector<double> getAttributeAsVector(const std::string& attributeName) const;
+     std::vector<int> getAttributeAsIntVector(const std::string& attributeName) const;
+     std::string getAttributeAsString(const std::string& attributeName, bool& attrIsPresent) const;
+     double getAttributeAsDouble(const std::string& attributeName, bool& attrIsPresent) const;
+     float getAttributeAsFloat(const std::string& attributeName, bool& attrIsPresent) const;
+     int getAttributeAsInt(const std::string& attributeName, bool& attrIsPresent) const;
+     long getAttributeAsLong(const std::string& attributeName, bool& attrIsPresent) const;
+     std::vector<double> getAttributeAsVector(const std::string& attributeName, bool& attrIsPresent) const;
+     std::vector<int> getAttributeAsIntVector(const std::string& attributeName, bool& attrIsPresent) const;
+     
+     
+     std::string getAttributeAsString(const std::string& attributeName, const std::string& fallBackVal) const;
+     double getAttributeAsDouble(const std::string& attributeName, const double fallBackVal) const;
+    
+     float getAttributeAsFloat(const std::string& attributeName, const float fallBackVal) const;
+     
+     int getAttributeAsInt(const std::string& attributeName, const int fallBackVal) const;
+    
+     long getAttributeAsLong(const std::string& attributeName, const long fallBackVal) const;
+
+    
+     std::vector<double> getAttributeAsVector(const std::string& attributeName, 
+                                             const std::vector<double>& fallBackVal) const;
+   
+     std::vector<int> getAttributeAsIntVector(const std::string& attributeName, 
+                                              const std::vector<int>& fallBackVal) const;
+
+     static bool s_printFlag;
+
+     ExpressionEvaluator* Evaluator() const {
+          static ExpressionEvaluator* eval=ExpressionEvaluator::GetEvaluator();
+          return eval;
+     }
 
-	ExpressionEvaluator* Evaluator() const
-	{
-		static ExpressionEvaluator* eval=ExpressionEvaluator::GetEvaluator();
-		return eval;
-	}
-private:
-	void RegisterToStore();
 };
 
 }  // end namespace
diff --git a/GeoModelTools/GeoModelXMLParser/src/XMLHandler.cxx b/GeoModelTools/GeoModelXMLParser/src/XMLHandler.cxx
index 82f3a6b03969374b466441ac9ed45be349705719..9351563030386ef4e22171d8e0ce83d83339fa0b 100644
--- a/GeoModelTools/GeoModelXMLParser/src/XMLHandler.cxx
+++ b/GeoModelTools/GeoModelXMLParser/src/XMLHandler.cxx
@@ -16,33 +16,24 @@ using namespace GeoModelTools;
 DOMNode* XMLHandler::s_currentElement=0;
 bool XMLHandler::s_printFlag=false;
 
-XMLHandler::XMLHandler(std::string n):m_name(n)  {
+XMLHandler::XMLHandler(const std::string& n):m_name(n)  {
 //    std::cout<< " creating new handler "<<n<<std::endl;
-    m_stopLoop=false;
-    RegisterToStore();
+   XMLHandlerStore::GetHandlerStore()->RegisterHandler(this);
 }
 
-void XMLHandler::RegisterToStore() 
-{
-    XMLHandlerStore::GetHandlerStore()->RegisterHandler(this);
-}
 
-void XMLHandler::StopLoop(bool v)
-{
+void XMLHandler::StopLoop(bool v) {
     m_stopLoop=v;
 }
-bool XMLHandler::IsLoopToBeStopped()
-{
+bool XMLHandler::IsLoopToBeStopped() const {
     return m_stopLoop;
 }
-bool XMLHandler::isAttribute(const std::string name) const
-{
+bool XMLHandler::isAttribute(const std::string&name) const {
     bool res;
     std::string temp=getAttribute(name,res);
     return res;
 }
-std::string XMLHandler::getAttribute(const std::string name, bool& isPresent) const
-{
+std::string XMLHandler::getAttribute(const std::string&name, bool& isPresent) const {
     std::string retValue="";
     isPresent=false;
     if (s_currentElement->hasAttributes()) {
@@ -64,8 +55,7 @@ std::string XMLHandler::getAttribute(const std::string name, bool& isPresent) co
     }
     return retValue;
 }
-std::string XMLHandler::getAttributeAsString(const std::string name) const
-{
+std::string XMLHandler::getAttributeAsString(const std::string&name) const {
     bool isPresent{false};
     std::string temp=getAttribute(name,isPresent);
     if (!isPresent) {
@@ -73,84 +63,79 @@ std::string XMLHandler::getAttributeAsString(const std::string name) const
     }
     return temp;
 }
-double XMLHandler::getAttributeAsDouble(const std::string name) const
-{
-	double res=0.;
-	bool isPresent{false};
-	std::string temp=getAttribute(name,isPresent);
-	if (!isPresent) {
+double XMLHandler::getAttributeAsDouble(const std::string&name) const {
+     double res=0.;
+     bool isPresent{false};
+     std::string temp=getAttribute(name,isPresent);
+     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
-	return res;
+     res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
+     return res;
 }
-float XMLHandler::getAttributeAsFloat(const std::string name) const
-{
-	float res=0.;
-	bool isPresent{false};
-	std::string temp=getAttribute(name,isPresent);
+float XMLHandler::getAttributeAsFloat(const std::string&name) const {
+     float res=0.;
+     bool isPresent{false};
+     std::string temp=getAttribute(name,isPresent);
     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
-	return res;
+     res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
+     return res;
 }
-int XMLHandler::getAttributeAsInt(const std::string name) const
-{
-	int res=0;
-	bool isPresent{false};
-	std::string temp=getAttribute(name,isPresent);
+int XMLHandler::getAttributeAsInt(const std::string&name) const {
+     int res=0;
+     bool isPresent{false};
+     std::string temp=getAttribute(name,isPresent);
     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
-	return res;
+     res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
+     return res;
 }
-long XMLHandler::getAttributeAsLong(const std::string name) const
-{
-	long res=0;
-	bool isPresent{false};
-	std::string temp=getAttribute(name,isPresent);
+long XMLHandler::getAttributeAsLong(const std::string&name) const {
+     long res=0;
+     bool isPresent{false};
+     std::string temp=getAttribute(name,isPresent);
     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
-	return res;
+     res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
+     return res;
 }
-std::vector<double> XMLHandler::getAttributeAsVector(const std::string name) const
-{
-	bool isPresent{false};
-	std::vector<double> vect;
-	std::string temp=getAttribute(name,isPresent);
-	if (!isPresent) {
+std::vector<double> XMLHandler::getAttributeAsVector(const std::string&name) const {
+     bool isPresent{false};
+     std::vector<double> vect;
+     std::string temp=getAttribute(name,isPresent);
+     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
-	for (unsigned int i=0;i<v.size();i++) {
-		vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
-	}
-	return vect;
+     std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
+     for (unsigned int i=0;i<v.size();i++) {
+          vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
+     }
+     return vect;
 }
 
-std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string name) const {
-	bool isPresent{false};
-	std::vector<int> vect;
-	std::string temp=getAttribute(name,isPresent);
-	if (!isPresent) {
+std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string&name) const {
+     bool isPresent{false};
+     std::vector<int> vect;
+     std::string temp=getAttribute(name,isPresent);
+     if (!isPresent) {
         THROW_EXCEPTION("--> Attribute '" << name << "' is not present! Check your data!");
     }
-	std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
-	for (unsigned int i=0;i<v.size();i++) {
-		vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
-	}
-	return vect;
+     std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
+     for (unsigned int i=0;i<v.size();i++) {
+          vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
+     }
+     return vect;
 }
 
-std::string XMLHandler::getAttributeAsString(const std::string name, bool& isPresent) const {
+std::string XMLHandler::getAttributeAsString(const std::string&name, bool& isPresent) const {
         std::string temp=getAttribute(name,isPresent);
         return temp;
 } 
-double XMLHandler::getAttributeAsDouble(const std::string name, bool& isPresent) const {
+double XMLHandler::getAttributeAsDouble(const std::string&name, bool& isPresent) const {
     double res=0.;
     std::string temp=getAttribute(name,isPresent);
     if (isPresent) {
@@ -158,15 +143,15 @@ double XMLHandler::getAttributeAsDouble(const std::string name, bool& isPresent)
     }
     return res;
 }
-float XMLHandler::getAttributeAsFloat(const std::string name, bool& isPresent) const {
+float XMLHandler::getAttributeAsFloat(const std::string&name, bool& isPresent) const {
     float res=0.;
     std::string temp=getAttribute(name,isPresent);
     if (isPresent) {
-		res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
+          res=ExpressionEvaluator::GetEvaluator()->Eval(temp.c_str());
     }
     return res;
 }
-int XMLHandler::getAttributeAsInt(const std::string name, bool& isPresent) const {
+int XMLHandler::getAttributeAsInt(const std::string&name, bool& isPresent) const {
     int res=0;
     std::string temp=getAttribute(name,isPresent);
     if (isPresent) {
@@ -174,7 +159,7 @@ int XMLHandler::getAttributeAsInt(const std::string name, bool& isPresent) const
     }
     return res;
 }
-long XMLHandler::getAttributeAsLong(const std::string name, bool& isPresent) const {
+long XMLHandler::getAttributeAsLong(const std::string&name, bool& isPresent) const {
     long res=0;
     std::string temp=getAttribute(name,isPresent);
     if (isPresent) {
@@ -182,11 +167,10 @@ long XMLHandler::getAttributeAsLong(const std::string name, bool& isPresent) con
     }
     return res;
 }
-std::vector<double> XMLHandler::getAttributeAsVector(const std::string name, bool& isPresent) const {
+std::vector<double> XMLHandler::getAttributeAsVector(const std::string&name, bool& isPresent) const {
     std::vector<double> vect;
     std::string temp=getAttribute(name,isPresent);
-    if (isPresent) 
-    {
+    if (isPresent) {
         std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
         for (unsigned int i=0;i<v.size();i++) {
             vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
@@ -195,25 +179,25 @@ std::vector<double> XMLHandler::getAttributeAsVector(const std::string name, boo
     return vect;
 }
 
-std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string name, bool& isPresent) const {
+std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string&name, bool& isPresent) const {
         std::vector<int> vect;
         std::string temp=getAttribute(name,isPresent);
         if (isPresent) {
-			std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
-			for (unsigned int i=0;i<v.size();i++) {
-				vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
-			}
+            std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
+            for (unsigned int i=0;i<v.size();i++) {
+                vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
+            }
         }
         return vect;
 }
 
-std::string XMLHandler::getAttributeAsString(const std::string name, const std::string def) const {
+std::string XMLHandler::getAttributeAsString(const std::string&name, const std::string&def) const {
     bool isPresent{false};
     std::string temp=getAttribute(name,isPresent);
     if (isPresent) return temp;
     else return def;
 }
-double XMLHandler::getAttributeAsDouble(const std::string name, const double def) const {
+double XMLHandler::getAttributeAsDouble(const std::string&name, const double def) const {
     bool isPresent{false};
     double res=0.;
     std::string temp=getAttribute(name,isPresent);
@@ -223,7 +207,7 @@ double XMLHandler::getAttributeAsDouble(const std::string name, const double def
     }
     return def;
 }
-float XMLHandler::getAttributeAsFloat(const std::string name, const float def) const {
+float XMLHandler::getAttributeAsFloat(const std::string&name, const float def) const {
     bool isPresent{false};
     float res=0.;
     std::string temp=getAttribute(name,isPresent);
@@ -233,7 +217,7 @@ float XMLHandler::getAttributeAsFloat(const std::string name, const float def) c
     }
     return def;
 }
-int XMLHandler::getAttributeAsInt(const std::string name, const int def) const {
+int XMLHandler::getAttributeAsInt(const std::string&name, const int def) const {
     bool isPresent{false};
     int res=0;
     std::string temp=getAttribute(name,isPresent);
@@ -243,7 +227,7 @@ int XMLHandler::getAttributeAsInt(const std::string name, const int def) const {
     }
     return def;
 }
-long XMLHandler::getAttributeAsLong(const std::string name, const long def) const {
+long XMLHandler::getAttributeAsLong(const std::string&name, const long def) const {
     bool isPresent{false};
     long res=0;
     std::string temp=getAttribute(name,isPresent);
@@ -253,7 +237,7 @@ long XMLHandler::getAttributeAsLong(const std::string name, const long def) cons
     }
     return def;
 }
-std::vector<double> XMLHandler::getAttributeAsVector(const std::string name, const std::vector<double> def) const {
+std::vector<double> XMLHandler::getAttributeAsVector(const std::string&name, const std::vector<double>& def) const {
     bool isPresent{false};
     std::vector<double> vect{};
     std::string temp=getAttribute(name,isPresent);
@@ -267,16 +251,16 @@ std::vector<double> XMLHandler::getAttributeAsVector(const std::string name, con
     return def;
 }
 
-std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string name, const std::vector<int> def) const {
-	bool isPresent{false};
-	std::vector<int> vect;
-	std::string temp=getAttribute(name,isPresent);
-	if (isPresent) {
-		std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
-		for (unsigned int i=0;i<v.size();i++) {
-			vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
-		}
-		return vect;
-	}
-	return def;
+std::vector<int> XMLHandler::getAttributeAsIntVector(const std::string&name, const std::vector<int>& def) const {
+     bool isPresent{false};
+     std::vector<int> vect;
+     std::string temp=getAttribute(name,isPresent);
+     if (isPresent) {
+          std::vector<std::string> v= GeoStrUtils::tokenize(temp, ";");
+          for (unsigned int i=0;i<v.size();i++) {
+               vect.push_back(ExpressionEvaluator::GetEvaluator()->Eval(v[i].c_str()));
+          }
+          return vect;
+     }
+     return def;
 }