diff --git a/src/Alarm.cpp b/src/Alarm.cpp
index 26759e10a0ec1eb75e13c78814a6ad7087f885b8..bf63e20e4ae8e133f1cd0bc39a8209d41417f9e1 100644
--- a/src/Alarm.cpp
+++ b/src/Alarm.cpp
@@ -211,9 +211,7 @@ void Alarm::delete_device()
 	e.value.push_back(ALARM_THREAD_EXIT_VALUE);
 	e.value.push_back(ALARM_THREAD_EXIT_VALUE);
 	evlist.push_back(e);
-#ifdef _RW_LOCK
-	alarms.del_rwlock();
-#endif
+	//alarms.del_rwlock(); moved in alarm_table destructor
 	alarms.stop_cmdthread();
 	sleep(1);		//wait for alarm_thread and log_thread to exit
 	//delete almloop;
@@ -413,9 +411,7 @@ void Alarm::init_device()
 	/*
 	 * connect to log database
 	 */	
-#ifdef _RW_LOCK
 	alarms.new_rwlock();
-#endif
 	try {
 		alarms.init_cmdthread();
 	} catch(...)
@@ -1263,11 +1259,7 @@ void Alarm::read_AlarmState(Tango::Attribute &attr)
 	string desc("");
 	string origin("");
 	int quality = Tango::ATTR_VALID;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	alarm_container_t::iterator it;
 	for(it = alarms.v_alarm.begin(); it != alarms.v_alarm.end(); it++)
 	{
@@ -1284,11 +1276,7 @@ void Alarm::read_AlarmState(Tango::Attribute &attr)
 		quality = it->second.quality;
 	}
 	DEBUG_STREAM << "Alarm::read_AlarmState: " << attr.get_name() << " desc=" << desc << endl;
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 	if(desc.length() > 0)
 	{
 		Tango::Except::throw_exception(
@@ -1346,11 +1334,7 @@ void Alarm::add_dynamic_attributes()
 	/*----- PROTECTED REGION ID(Alarm::add_dynamic_attributes) ENABLED START -----*/
 	
 	//	Add your own code to create and add dynamic attributes if any
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	if (alarms.v_alarm.empty() == false)
 	{
 		for (alarm_container_t::iterator i = alarms.v_alarm.begin(); \
@@ -1366,11 +1350,7 @@ void Alarm::add_dynamic_attributes()
 			i->second.attr_value_formula = attr_value_formula;
 		}
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 	
 	/*----- PROTECTED REGION END -----*/	//	Alarm::add_dynamic_attributes
 }
@@ -1394,11 +1374,7 @@ void Alarm::ack(const Tango::DevVarStringArray *argin)
 	vector<string>::iterator si;
 	
 	for (si = str.begin(); si != str.end(); si++) {
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
 		alarms.vlock->readerIn();
-#endif
 		alarmedlock->readerIn();
 		vector<alarm_t>::iterator found = \
 		find(alarmed.begin(), alarmed.end(), *si);
@@ -1410,22 +1386,14 @@ void Alarm::ack(const Tango::DevVarStringArray *argin)
 			{
 				INFO_STREAM << __func__ << ": alarm '" << *si << "' not found";
 				alarmedlock->readerOut();
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->readerOut();
-#endif
 				continue;
 			}
 			if(!i->second.enabled || i->second.shelved)
 			{
 				DEBUG_STREAM << __func__ << ": alarm '" << *si << "' not enabled";
 				alarmedlock->readerOut();
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->readerOut();
-#endif
 				continue;
 			}
 
@@ -1478,11 +1446,7 @@ void Alarm::ack(const Tango::DevVarStringArray *argin)
 			found->ack = ACK;
 		}
 		alarmedlock->readerOut();
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 	}
 	/*
 	 * remove S_NORMAL status ACKnowledged alarms
@@ -1613,19 +1577,11 @@ void Alarm::load(Tango::DevString argin)
 		add_event(alm, evn);
 	} catch (string& err) {
 		WARN_STREAM << "Alarm::load(): " << err << endl;
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
 		alarms.vlock->writerIn();
-#endif
 		alarm_container_t::iterator i = alarms.v_alarm.find(alm.name);		//look for alarm just added
 		if (i != alarms.v_alarm.end())	
 			alarms.erase(i);											//and remove from alarm_table
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->writerOut();
-#endif
 		Tango::Except::throw_exception( \
 				(const char*)"Alarm::load()", \
 				(const char*)err.c_str(), \
@@ -1638,12 +1594,7 @@ void Alarm::load(Tango::DevString argin)
 	alm.confstr(conf_str);
 	saved_alarms.insert(make_pair(alm.attr_name,conf_str));
 
-
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
-		alarms.vlock->readerIn();
-#endif
+	alarms.vlock->readerIn();
 	alarm_container_t::iterator i = alarms.v_alarm.find(alm.name);
 	if(i != alarms.v_alarm.end())
 	{
@@ -1749,11 +1700,7 @@ void Alarm::load(Tango::DevString argin)
 			evlist.push_back(e);
 		}
 	}
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
-		alarms.vlock->readerOut();
-#endif
+	alarms.vlock->readerOut();
 
 
 #if 0//TODO
@@ -1948,11 +1895,7 @@ Tango::DevVarStringArray *Alarm::search_alarm(Tango::DevString argin)
 	alarm_filtered.push_back(os1.str());*/
 
 	alarm_container_t::iterator ai;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	for (ai = alarms.v_alarm.begin(); ai != alarms.v_alarm.end(); ai++) 
 	{
 		found = 0;
@@ -1970,11 +1913,7 @@ Tango::DevVarStringArray *Alarm::search_alarm(Tango::DevString argin)
 			alarm_filtered.push_back(os.str());
 		}
 	}  /* for */
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 	argout->length(alarm_filtered.size());
 	int i = 0;
 	for (vector<string>::iterator it= alarm_filtered.begin(); it != alarm_filtered.end(); it++) 
@@ -2002,19 +1941,11 @@ void Alarm::stop_audible()
 	//12-06-08: StopNew command set is_new to 0
 	//	Add your own code to control device here
 	alarm_container_t::iterator ai;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	for (ai = alarms.v_alarm.begin(); ai != alarms.v_alarm.end(); ai++) {
 		ai->second.is_new = 0;		//set all alarm as no more new
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 
 	prepare_alarm_attr();
 	try
@@ -2080,11 +2011,7 @@ void Alarm::silence(const Tango::DevVarStringArray *argin)
 
 	for (si = str.begin(); si != str.end(); si++)
 	{
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
 		alarms.vlock->readerIn();
-#endif
 		alarm_container_t::iterator i = alarms.v_alarm.find(*si);
 		if(i != alarms.v_alarm.end())
 		{
@@ -2110,11 +2037,7 @@ void Alarm::silence(const Tango::DevVarStringArray *argin)
 			{
 				ostringstream err;
 				err << "Alarm " << *si << " already silenced for " << i->second.silenced << " more minutes" << ends;
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->readerOut();
-#endif
 				Tango::Except::throw_exception( \
 							(const char*)"Alarm already silenced", \
 							err.str(), \
@@ -2124,11 +2047,7 @@ void Alarm::silence(const Tango::DevVarStringArray *argin)
 			{
 				ostringstream err;
 				err << "Alarm " << *si << " cannot be silenced" << ends;
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->readerOut();
-#endif
 				Tango::Except::throw_exception( \
 							(const char*)"Alarm cannot be silenced", \
 							err.str(), \
@@ -2153,11 +2072,7 @@ void Alarm::silence(const Tango::DevVarStringArray *argin)
 		//alarms.unlock();
 		if(i == alarms.v_alarm.end())
 		{
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			ostringstream err;
 			err << "Alarm " << *si << " not found" << ends;
 			Tango::Except::throw_exception( \
@@ -2165,11 +2080,7 @@ void Alarm::silence(const Tango::DevVarStringArray *argin)
 						err.str(), \
 						(const char*)"Alarm::silence()", Tango::ERR);
 		}
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 	}
 
 	prepare_alarm_attr();
@@ -2319,11 +2230,7 @@ void Alarm::modify(Tango::DevString argin)
 	//2: if alarm already exist and
 	//   formula is not changed
 	//------------------------------
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->writerIn();
-#endif
 	alarm_container_t::iterator i = alarms.v_alarm.find(alm.name);
 	if (i != alarms.v_alarm.end())
 	{
@@ -2362,11 +2269,7 @@ void Alarm::modify(Tango::DevString argin)
 				ostringstream o;
 				o << __func__<<": syntax error in '" << alarm_string << "'" << ends;
 				WARN_STREAM << o.str() << endl;
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->writerOut();
-#endif
 				Tango::Except::throw_exception( \
 						(const char*)o.str().c_str(), \
 						(const char*)"", \
@@ -2442,21 +2345,13 @@ void Alarm::modify(Tango::DevString argin)
 					set_internal_alarm(INTERNAL_ERROR, gettime(), err.str());
 				}
 			}
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->writerOut();
-#endif
 			return;
 		}
 	}
 	else
 	{
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->writerOut();
-#endif
        	ostringstream o;
        	o << "Alarm '"<<alm.name<<"' not found" << ends;
        	DEBUG_STREAM << o.str() << endl;
@@ -2465,11 +2360,7 @@ void Alarm::modify(Tango::DevString argin)
 				(const char*)o.str().c_str(), \
 				(const char*)__func__, Tango::ERR);
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->writerOut();
-#endif
 
 	//------------------------------
 	//3: remove (set active=0 on db)
@@ -2545,21 +2436,13 @@ void Alarm::shelve(const Tango::DevVarStringArray *argin)
 
 	for (si = str.begin(); si != str.end(); si++)
 	{
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
 		alarms.vlock->readerIn();
-#endif
 		alarm_container_t::iterator i = alarms.v_alarm.find(*si);
 		if(i == alarms.v_alarm.end())
 		{
 			ostringstream err;
 			err << *si << " not found in configured alarms" << ends;
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			Tango::Except::throw_exception( \
 				(const char*)"NOT_FOUND", \
 				(const char*)err.str().c_str(), \
@@ -2569,11 +2452,7 @@ void Alarm::shelve(const Tango::DevVarStringArray *argin)
 		{
 			ostringstream err;
 			err << *si << " is not enabled" << ends;
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			Tango::Except::throw_exception( \
 				(const char*)"NOT_ENABLED", \
 				(const char*)err.str().c_str(), \
@@ -2601,11 +2480,7 @@ void Alarm::shelve(const Tango::DevVarStringArray *argin)
 		{
 			ostringstream err;
 			err << *si << " is already shelved" << ends;
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			Tango::Except::throw_exception( \
 				(const char*)"ALREADY_SHELVED", \
 				(const char*)err.str().c_str(), \
@@ -2615,30 +2490,18 @@ void Alarm::shelve(const Tango::DevVarStringArray *argin)
 		{
 			ostringstream err;
 			err << "Alarm " << *si << " cannot be shelved" << ends;
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			Tango::Except::throw_exception( \
 						(const char*)"NOT_ALLOWED", \
 						err.str(), \
 						(const char*)__func__, Tango::ERR);
 		}
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 	}
 
 	for (si = str.begin(); si != str.end(); si++)
 	{
-#ifndef _RW_LOCK
-		alarms.lock();
-#else
 		alarms.vlock->readerIn();
-#endif
 		alarm_container_t::iterator i = alarms.v_alarm.find(*si);
 		if(i == alarms.v_alarm.end())
 			continue;
@@ -2686,11 +2549,7 @@ void Alarm::shelve(const Tango::DevVarStringArray *argin)
 		{
 			WARN_STREAM << "Alarm::"<<__func__<<": EXCEPTION PUSHING EVENTS: " << ex.errors[0].desc << endl;
 		}
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 	}
 
 	prepare_alarm_attr();
@@ -2749,21 +2608,13 @@ void Alarm::enable(Tango::DevString argin)
 	//	Add your own code
 	string arginname(argin);
 
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	alarm_container_t::iterator i = alarms.v_alarm.find(arginname);
 	if(i == alarms.v_alarm.end())
 	{
 		ostringstream err;
 		err << arginname << " not found in configured alarms" << ends;
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 		Tango::Except::throw_exception( \
 			(const char*)"NOT_FOUND", \
 			(const char*)err.str().c_str(), \
@@ -2811,11 +2662,7 @@ void Alarm::enable(Tango::DevString argin)
 		WARN_STREAM << "Alarm::"<<__func__<<": EXCEPTION PUSHING EVENTS: " << ex.errors[0].desc << endl;
 	}
 
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 
 	prepare_alarm_attr();
 	try
@@ -2873,21 +2720,13 @@ void Alarm::disable(Tango::DevString argin)
 	//	Add your own code
 	string arginname(argin);
 
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	alarm_container_t::iterator i = alarms.v_alarm.find(arginname);
 	if(i == alarms.v_alarm.end())
 	{
 		ostringstream err;
 		err << arginname << " not found in configured alarms" << ends;
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->readerOut();
-#endif
 		Tango::Except::throw_exception( \
 			(const char*)"NOT_FOUND", \
 			(const char*)err.str().c_str(), \
@@ -2928,11 +2767,7 @@ void Alarm::disable(Tango::DevString argin)
 		WARN_STREAM << "Alarm::"<<__func__<<": EXCEPTION PUSHING EVENTS: " << ex.errors[0].desc << endl;
 	}
 
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
-		alarms.vlock->readerOut();
-#endif
+	alarms.vlock->readerOut();
 
 	/*
 	 * remove from alarmed
@@ -3009,11 +2844,7 @@ void Alarm::reset_statistics()
 	/*----- PROTECTED REGION ID(Alarm::reset_statistics) ENABLED START -----*/
 	
 	//	Add your own code
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	for(alarm_container_t::iterator i = alarms.v_alarm.begin(); i!= alarms.v_alarm.end(); i++)
 	{
 		i->second.freq_counter = 0;
@@ -3022,11 +2853,7 @@ void Alarm::reset_statistics()
 	clock_gettime(CLOCK_MONOTONIC, &now);
 	double dnow = (now.tv_sec) + ((double)(now.tv_nsec))/1000000000;
 	last_statistics_reset_time = dnow;
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 	/*----- PROTECTED REGION END -----*/	//	Alarm::reset_statistics
 }
 //--------------------------------------------------------
@@ -3203,11 +3030,7 @@ void Alarm::load_alarm(string alarm_string, alarm_t &alm, vector<string> &evn)
 #if 0
 void Alarm::init_alarms(map< string,vector<string> > &alarm_events)
 {
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	if (alarms.v_alarm.empty() == false) 
 	{
 		for (alarm_container_t::iterator i = alarms.v_alarm.begin(); \
@@ -3235,11 +3058,7 @@ void Alarm::init_alarms(map< string,vector<string> > &alarm_events)
 			}	/* for */
 		}
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 }
 #endif
 void Alarm::init_events(vector<string> &evn)
@@ -3308,11 +3127,7 @@ void Alarm::add_event(alarm_t& a, vector<string> &evn) throw(string&)
 			a.to_be_evaluated = true;
 			DEBUG_STREAM << "Alarm::add_event(): '" << *j << "' found, added " \
 									 << " alarm '"  << a.name << "' to list, valid=" << k->valid << endl;
-#ifndef _RW_LOCK
-			alarms.lock();
-#else
 			alarms.vlock->readerIn();
-#endif
 			alarm_container_t::iterator l = alarms.v_alarm.find(a.name);
 			if (l != alarms.v_alarm.end()) 
 			{
@@ -3323,11 +3138,7 @@ void Alarm::add_event(alarm_t& a, vector<string> &evn) throw(string&)
 				WARN_STREAM << "Alarm::add_event():	error inserting event '" << *j << "' in set of alarm '" 
 							<< a.name << "'" << endl;
 			}
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 		} 
 		else 
 		{
@@ -3341,11 +3152,7 @@ void Alarm::add_event(alarm_t& a, vector<string> &evn) throw(string&)
 			 */
 			DEBUG_STREAM << "Alarm::add_event(): adding '" << *j \
 									 << "' to event list of alarm '" << a.name << "'" << endl;
-#ifndef _RW_LOCK
-			alarms.lock();
-#else
 			alarms.vlock->readerIn();
-#endif
 			alarm_container_t::iterator l = alarms.v_alarm.find(a.name);
 			if (l != alarms.v_alarm.end()) 
 			{			
@@ -3356,11 +3163,7 @@ void Alarm::add_event(alarm_t& a, vector<string> &evn) throw(string&)
 				WARN_STREAM << "Alarm::add_event():	error inserting event '" << *j << "' in set of alarm '" 
 							<< a.name << "'" << endl;
 			}
-#ifndef _RW_LOCK
-			alarms.unlock();
-#else
 			alarms.vlock->readerOut();
-#endif
 			/*
 			 * now, for the just-added event
 			 */
@@ -3489,11 +3292,7 @@ void Alarm::do_alarm(bei_t& e)
 			vector<string>::iterator j = found_ev->m_alarm.begin();
 			while (j != found_ev->m_alarm.end())
 			{
-#ifndef _RW_LOCK
-				alarms.lock();
-#else
 				alarms.vlock->readerIn();
-#endif
 				alarm_container_t::iterator it = alarms.v_alarm.find(*j);
 				if(it != alarms.v_alarm.end())
 				{
@@ -3518,11 +3317,7 @@ void Alarm::do_alarm(bei_t& e)
 					}catch(Tango::DevFailed &ex)
 					{}
 				}
-#ifndef _RW_LOCK
-          		alarms.unlock();
-#else
           		alarms.vlock->readerOut();
-#endif
           		j++;
 			}
 		}
@@ -3644,11 +3439,7 @@ bool Alarm::do_alarm_eval(string alm_name, string ev_name, Tango::TimeVal ts)
 	formula_res_t res;
 	//alarm_container_t::iterator it = alarms.v_alarm.find(j->first);
 	DEBUG_STREAM << "Alarm::"<<__func__<<": before lock name=" << alm_name<< " ev=" << ev_name << endl;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	DEBUG_STREAM << "Alarm::"<<__func__<<": after lock name=" << alm_name<< " ev=" << ev_name << endl;
 	alarm_container_t::iterator it = alarms.v_alarm.find(alm_name);
 	if(it != alarms.v_alarm.end())
@@ -3778,11 +3569,7 @@ bool Alarm::do_alarm_eval(string alm_name, string ev_name, Tango::TimeVal ts)
 			WARN_STREAM << "Alarm::"<<__func__<<": EXCEPTION PUSHING EVENTS: " << ex.errors[0].desc << endl;
 		}
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 	return 	changed;
 }
 
@@ -3860,11 +3647,7 @@ void Alarm::timer_update()
 bool Alarm::remove_alarm(string& s) throw(string&)
 {
 	DEBUG_STREAM << "Alarm::"<<__func__<<": entering alm name=" << s << endl;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->writerIn();
-#endif
 	alarm_container_t::iterator i = alarms.v_alarm.find(s);
 	if (i != alarms.v_alarm.end()) {
 		DEBUG_STREAM << "Alarm::"<<__func__<<": found in table alm name=" << s << endl;
@@ -3900,11 +3683,7 @@ bool Alarm::remove_alarm(string& s) throw(string&)
 						o << "unsubscribe_event() failed for " \
 						 	<< k->name << ends;
 						WARN_STREAM << "Alarm::remove_alarm(): " << o.str() << endl;
-#ifndef _RW_LOCK
-						alarms.unlock();
-#else
 						alarms.vlock->writerOut();
-#endif
 						throw o.str();
 						//return false;
 					}
@@ -3918,11 +3697,7 @@ bool Alarm::remove_alarm(string& s) throw(string&)
 				o << "event '" << *j \
 					<< "' not found in event table" << ends;
 				WARN_STREAM << "Alarm::remove_alarm(): " << o.str() << endl;
-#ifndef _RW_LOCK
-				alarms.unlock();
-#else
 				alarms.vlock->writerOut();
-#endif
 				throw o.str();
 				//return false;
 			}
@@ -3959,22 +3734,14 @@ bool Alarm::remove_alarm(string& s) throw(string&)
 		 * remove this alarm from alarm table
 		 */
 		alarms.erase(i);
-#ifndef _RW_LOCK
-		alarms.unlock();
-#else
 		alarms.vlock->writerOut();
-#endif
 		return true;
 	}
 	else
 	{
 		WARN_STREAM << "Alarm::"<<__func__<<": NOT found in table alm name=" << s << endl;
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->writerOut();
-#endif
 	ostringstream o;
 	o << "alarm '" \
 		<< s << "' not found in alarm table" << ends;
@@ -4738,11 +4505,7 @@ void Alarm::prepare_alarm_attr()
 	alarm_container_t::iterator ai;
 	vector<alarm_t>::iterator aid;
 	bool is_audible=false;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	outOfServiceAlarms_read.clear();
 	shelvedAlarms_read.clear();
 	acknowledgedAlarms_read.clear();
@@ -4900,11 +4663,7 @@ void Alarm::prepare_alarm_attr()
 		}  /* if else if */
 	}  /* for */
 	*attr_audibleAlarm_read = is_audible;
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 
 	vector<string> tmp_alarm_table;
 	string is_new;
@@ -5022,11 +4781,7 @@ bool Alarm::compare_without_domain(string str1, string str2)
 void Alarm::put_signal_property()
 {
 	vector<string> prop;
-#ifndef _RW_LOCK
-	alarms.lock();
-#else
 	alarms.vlock->readerIn();
-#endif
 	alarm_container_t::iterator it;
 	for(it = alarms.v_alarm.begin(); it != alarms.v_alarm.end(); it++)
 	{
@@ -5070,11 +4825,7 @@ void Alarm::put_signal_property()
 		if(it2 != saved_alarms.end())
 			it2++;
 	}
-#ifndef _RW_LOCK
-	alarms.unlock();
-#else
 	alarms.vlock->readerOut();
-#endif
 
 
 	Tango::DbData	data;
diff --git a/src/alarm_table.cpp b/src/alarm_table.cpp
index 9bf5bdf8d44e4ab126e773b4d50626ee862dd0b9..b76fb05e4e608b96c200cd393e343ba8cefa6feb 100644
--- a/src/alarm_table.cpp
+++ b/src/alarm_table.cpp
@@ -266,27 +266,15 @@ void alarm_table::init(vector<string>& avs, vector<string> &evn, map< string,vec
 
 void alarm_table::push_back(alarm_t &a)
 {
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->writerIn();
-#endif
 	//v_alarm.push_back(a);
 	v_alarm.insert(make_pair(a.name,a));
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->writerOut();
-#endif
 }
 
 void alarm_table::show(vector<string> &al_table_string)
 {
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	ostringstream log_msg;
 	string log_str;
 	if (v_alarm.empty() == false) {
@@ -321,11 +309,7 @@ void alarm_table::show(vector<string> &al_table_string)
 			j++;
 		}
 	}
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 }
 
 unsigned int alarm_table::size(void)
@@ -340,11 +324,7 @@ alarm_container_t& alarm_table::get(void)
 
 void alarm_table::stored(vector<alarm_t>& a)
 {
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	if (a.empty() == false) {
 		for (vector<alarm_t>::iterator i = a.begin(); i != a.end(); i++) 
 		{
@@ -364,11 +344,7 @@ void alarm_table::stored(vector<alarm_t>& a)
 			}
 		}  /* for */
 	}  /* if */
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 }
 
 bool alarm_table::update(const string& alm_name, Tango::TimeVal ts, formula_res_t res, string &attr_values, string grp, string msg, string formula)
@@ -376,11 +352,7 @@ bool alarm_table::update(const string& alm_name, Tango::TimeVal ts, formula_res_
 	bool ret_changed=false;
 	//Tango::TimeVal now = gettime();
 	TangoSys_MemStream out_stream;
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	alarm_container_t::iterator found = v_alarm.find(alm_name);
 	if (found != v_alarm.end()) 
 	{
@@ -554,11 +526,7 @@ bool alarm_table::update(const string& alm_name, Tango::TimeVal ts, formula_res_
 		out_stream << "couldn't find alarm '" << alm_name << "' in 'alarms' table" << ends;
 		LOG_STREAM << gettime().tv_sec << " alarm_table::update(): " << out_stream.str() << endl;
 	}
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 	if(out_stream.str().length() > 0)
 		throw out_stream.str();
 	return ret_changed;
@@ -569,11 +537,7 @@ bool alarm_table::timer_update()
 	bool ret_changed=false;
 	Tango::TimeVal ts = gettime();
 	TangoSys_MemStream out_stream;
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	for(alarm_container_t::iterator i = v_alarm.begin(); i != v_alarm.end(); i++)
 	{		
 		bool status_on_delay;
@@ -762,11 +726,7 @@ bool alarm_table::timer_update()
 		}
 		//found->second.ts = ts;	/* store event timestamp into alarm timestamp */ //here update ts everytime
 	}
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 	if(out_stream.str().length() > 0)
 		throw out_stream.str();
 	return ret_changed;
@@ -774,17 +734,9 @@ bool alarm_table::timer_update()
 
 void alarm_table::erase(alarm_container_t::iterator i)
 {
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->writerIn();
-#endif
 	v_alarm.erase(i);
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->writerOut();
-#endif
 }
 
 bool alarm_table::exist(string& s)
@@ -799,48 +751,30 @@ bool alarm_table::exist(string& s)
 unsigned int alarm_table::to_be_evaluated_num()
 {
 	unsigned int ret=0;
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	for(alarm_container_t::iterator i = v_alarm.begin(); i != v_alarm.end(); i++)
 	{
 		if(i->second.to_be_evaluated == true)
 			ret++;
 	}
 
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 	return ret;
 }
 
 vector<string> alarm_table::to_be_evaluated_list()
 {
 	vector<string> ret;
-#ifndef _RW_LOCK
-	this->lock();
-#else
 	vlock->readerIn();
-#endif
 	for(alarm_container_t::iterator i = v_alarm.begin(); i != v_alarm.end(); i++)
 	{
 		if(i->second.to_be_evaluated == true)
 			ret.push_back(i->first);
 	}
-
-#ifndef _RW_LOCK
-	this->unlock();
-#else
 	vlock->readerOut();
-#endif
 	return ret;
 }
 
-#ifdef _RW_LOCK
 void alarm_table::new_rwlock()
 {
 	vlock = new(ReadersWritersLock);
@@ -849,7 +783,6 @@ void alarm_table::del_rwlock()
 {
 	delete vlock;
 }
-#endif
 
 void alarm_table::init_cmdthread()
 {
diff --git a/src/alarm_table.h b/src/alarm_table.h
index fc02c7531ea5483a55dd9457368dd533ce9879f6..1780f778a0f4693a3ffad31a1a66ae0a312da334 100644
--- a/src/alarm_table.h
+++ b/src/alarm_table.h
@@ -326,14 +326,10 @@ class alarm_t {
 };
 
 typedef map<string,alarm_t> alarm_container_t;	
-#ifndef _RW_LOCK
-class alarm_table  : public omni_mutex {
-#else
 class alarm_table {
-#endif
 	public:
 		alarm_table() {}
-		~alarm_table() {}
+		~alarm_table() {del_rwlock();}
 		void set_dev(Tango::DeviceImpl* devImpl) {mydev=devImpl;}
 
 		//void init(vector<string>& avs);
@@ -351,11 +347,9 @@ class alarm_table {
 		vector<string> to_be_evaluated_list();
 		//vector<alarm_t> v_alarm;
 		alarm_container_t v_alarm;
-#ifdef _RW_LOCK
 		ReadersWritersLock *vlock;
 		void new_rwlock();
 		void del_rwlock();
-#endif
 
 		void save_alarm_conf_db(string att_name, string name, string status, string ack, bool enabled,
 				 string formula, unsigned int on_delay, unsigned int off_delay, string grp, string lev, string msg, string cmd_a, string cmd_n, int silent_time, vector<string> alm_list=vector<string>());