From 10c3bdce57021156e3e13eefc34d9f3569d20154 Mon Sep 17 00:00:00 2001
From: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Date: Sat, 11 Apr 2015 17:47:56 +0200
Subject: [PATCH] finalised the editor of the instance now is managed also the
 editing of the instance and not only the creation. Add some little change on
 the overall color palette Squashed commits: -fixed the api for create the
 instance and completed the functionality of us and cu instance editor
 -correct !CHAOS name and added search instance api into metadata services
 -fixed the set of the instance for a control unit -fix xcode include and
 library path and CMake compilation -terminated the development of the
 "setInstanceDescription" for the control unit and updated the derive table
 management in qt ccs client. Need to be implemented the attribute table
 -added new api to the metadata server for the cu instances, added a function
 to CDataWrapper to get the BSON buffer without ownership -fixed the
 multithreading usage of method to send request -added the
 shared_ptr<CDataWrapper> as future/promises data in this way is more safe the
 memory management

---
 .../thread/ObjectPriorityQueueTest.cpp        |   2 +-
 .../thread/ObjectPriorityQueueTest.h          |   2 +-
 ArchitectureTests/thread/ObjectQueueTest.cpp  |   2 +-
 ArchitectureTests/thread/ObjectQueueTest.h    |   2 +-
 ArchitectureTests/utility/HashMapTest.cpp     |   2 +-
 ArchitectureTests/utility/HashMapTest.h       |   2 +-
 CHAOSFramework.xcodeproj/project.pbxproj      | 116 +++++-
 ChaosDataExport/cde.cpp                       |   3 +-
 ChaosDataService/ChaosDataService.cpp         |   2 +-
 ChaosDataService/ChaosDataService.h           |   2 +-
 ChaosDataService/QueryDataConsumer.cpp        |   2 +-
 ChaosDataService/QueryDataConsumer.h          |   2 +-
 ChaosDataService/StageDataConsumer.cpp        |   2 +-
 ChaosDataService/StageDataConsumer.h          |   2 +-
 ChaosDataService/cache_system/CacheDriver.cpp |   2 +-
 ChaosDataService/cache_system/CacheDriver.h   |   2 +-
 .../cache_system/CouchbaseCacheDriver.cpp     |   2 +-
 .../cache_system/CouchbaseCacheDriver.h       |   2 +-
 .../cache_system/MemcachedCacheDriver.h       |   2 +-
 ChaosDataService/cache_system/cache_system.h  |   2 +-
 .../cache_system/cache_system_types.h         |   2 +-
 ChaosDataService/db_system/DBDriver.cpp       |   2 +-
 ChaosDataService/db_system/DBDriver.h         |   2 +-
 ChaosDataService/db_system/DBIndexCursor.cpp  |   2 +-
 ChaosDataService/db_system/DBIndexCursor.h    |   2 +-
 ChaosDataService/db_system/MongoDBDriver.h    |   2 +-
 .../db_system/MongoDBIndexCursor.cpp          |   2 +-
 .../db_system/MongoDBIndexCursor.h            |   2 +-
 ChaosDataService/db_system/db_system.h        |   2 +-
 ChaosDataService/db_system/db_system_types.h  |   2 +-
 ChaosDataService/indexer/DataPackScanner.cpp  |   2 +-
 ChaosDataService/indexer/DataPackScanner.h    |   2 +-
 .../indexer/StageDataVFileScanner.cpp         |   2 +-
 .../indexer/StageDataVFileScanner.h           |   2 +-
 ChaosDataService/main.cpp                     |   2 +-
 ChaosDataService/query_engine/QueryEngine.cpp |   2 +-
 ChaosDataService/query_engine/QueryEngine.h   |   2 +-
 ChaosDataService/vfs/DataBlock.h              |   2 +-
 ChaosDataService/vfs/VFSConsts.h              |   2 +-
 ChaosDataService/vfs/VFSDataFile.cpp          |   2 +-
 ChaosDataService/vfs/VFSDataFile.h            |   2 +-
 ChaosDataService/vfs/VFSDataWriteableFile.cpp |   2 +-
 ChaosDataService/vfs/VFSDataWriteableFile.h   |   2 +-
 ChaosDataService/vfs/VFSFile.cpp              |   2 +-
 ChaosDataService/vfs/VFSFile.h                |   2 +-
 ChaosDataService/vfs/VFSManager.cpp           |   2 +-
 ChaosDataService/vfs/VFSManager.h             |   2 +-
 ChaosDataService/vfs/VFSQuery.cpp             |   2 +-
 ChaosDataService/vfs/VFSQuery.h               |   2 +-
 ChaosDataService/vfs/VFSStageFile.cpp         |   2 +-
 ChaosDataService/vfs/VFSStageFile.h           |   2 +-
 ChaosDataService/vfs/VFSStageReadableFile.cpp |   2 +-
 ChaosDataService/vfs/VFSStageReadableFile.h   |   2 +-
 .../vfs/VFSStageWriteableFile.cpp             |   2 +-
 ChaosDataService/vfs/VFSStageWriteableFile.h  |   2 +-
 ChaosDataService/vfs/VFSTypes.h               |   2 +-
 ChaosDataService/vfs/query/DataBlockCache.cpp |   2 +-
 ChaosDataService/vfs/query/DataBlockCache.h   |   2 +-
 .../vfs/query/DataBlockFetcher.cpp            |   2 +-
 ChaosDataService/vfs/query/DataBlockFetcher.h |   2 +-
 .../vfs/storage_system/PosixStorageDriver.cpp |   2 +-
 .../vfs/storage_system/PosixStorageDriver.h   |   2 +-
 .../vfs/storage_system/StorageDriver.cpp      |   2 +-
 .../vfs/storage_system/StorageDriver.h        |   2 +-
 .../vfs/storage_system/storage_system.h       |   2 +-
 ChaosDataService/vfs/vfs.h                    |   2 +-
 ChaosDataService/worker/DataWorker.h          |   2 +-
 .../worker/DeviceSharedDataWorker.cpp         |   2 +-
 .../worker/DeviceSharedDataWorker.h           |   2 +-
 .../worker/SnapshotCreationWorker.cpp         |   2 +-
 .../worker/SnapshotCreationWorker.h           |   2 +-
 ChaosMetadataService/CMakeLists.txt           |  19 +-
 ChaosMetadataService/ChaosMetadataService.cpp |   2 +-
 ChaosMetadataService/ChaosMetadataService.h   |   2 +-
 ChaosMetadataService/api/AbstractApi.cpp      |   2 +-
 ChaosMetadataService/api/AbstractApi.h        |   2 +-
 ChaosMetadataService/api/AbstractApiGroup.cpp |   2 +-
 ChaosMetadataService/api/AbstractApiGroup.h   |   2 +-
 ChaosMetadataService/api/ApiManagment.cpp     |   2 +-
 ChaosMetadataService/api/ApiManagment.h       |   2 +-
 .../api/control_unit/ControlUnitGroup.cpp     |  40 ++
 .../api/control_unit/ControlUnitGroup.h       |  43 ++
 .../api/control_unit/DeleteInstance.cpp       |  57 +++
 .../api/control_unit/DeleteInstance.h         |  44 ++
 .../api/control_unit/GetInstance.cpp          |  59 +++
 .../api/control_unit/GetInstance.h            |  44 ++
 .../api/control_unit/SearchInstancesByUS.cpp  |  89 ++++
 .../api/control_unit/SearchInstancesByUS.h    |  45 ++
 .../control_unit/SetInstanceDescription.cpp   |  83 ++++
 .../api/control_unit/SetInstanceDescription.h |  44 ++
 .../api/node/NodeCreateUnitServer.cpp         |   2 +-
 .../api/node/NodeCreateUnitServer.h           |   2 +-
 .../api/node/NodeGetDescription.cpp           |   2 +-
 .../api/node/NodeGetDescription.h             |   2 +-
 ChaosMetadataService/api/node/NodeGroup.cpp   |   2 +-
 ChaosMetadataService/api/node/NodeGroup.h     |   2 +-
 .../api/node/NodeRegister.cpp                 |   2 +-
 ChaosMetadataService/api/node/NodeRegister.h  |   2 +-
 ChaosMetadataService/api/node/NodeSearch.cpp  |   2 +-
 ChaosMetadataService/api/node/NodeSearch.h    |   2 +-
 .../api/producer/ProducerApiGroup.cpp         |   2 +-
 .../api/producer/ProducerApiGroup.h           |   2 +-
 .../api/producer/ProducerRegisterApi.cpp      |   2 +-
 .../api/producer/ProducerRegisterApi.h        |   2 +-
 .../batch/MDSBatchCommand.cpp                 |   2 +-
 ChaosMetadataService/batch/MDSBatchCommand.h  |   2 +-
 .../batch/MDSBatchExecutor.cpp                |   2 +-
 ChaosMetadataService/batch/MDSBatchExecutor.h |   2 +-
 .../batch/mds_service_batch.h                 |   2 +-
 .../unit_server/UnitServerAckBatchCommand.cpp |   2 +-
 .../unit_server/UnitServerAckBatchCommand.h   |   2 +-
 .../batch/unit_server/unit_server_batch.h     |   2 +-
 ChaosMetadataService/main.cpp                 |   2 +-
 ChaosMetadataService/mds_types.h              |   2 +-
 .../data_access/ControlUnitDataAccess.cpp     |   2 +-
 .../data_access/ControlUnitDataAccess.h       |  22 +-
 .../persistence/data_access/DataAccess.h      |   2 +-
 .../data_access/NodeDataAccess.cpp            |   2 +-
 .../persistence/data_access/NodeDataAccess.h  |   2 +-
 .../data_access/UnitServerDataAccess.cpp      |   2 +-
 .../data_access/UnitServerDataAccess.h        |   2 +-
 .../data_access/UtilityDataAccess.cpp         |   2 +-
 .../data_access/UtilityDataAccess.h           |   2 +-
 .../mongodb/MongoDBControlUnitDataAccess.cpp  | 264 +++++++++++-
 .../mongodb/MongoDBControlUnitDataAccess.h    |  23 +-
 .../mongodb/MongoDBNodeDataAccess.cpp         |  18 +-
 .../mongodb/MongoDBNodeDataAccess.h           |  19 +-
 .../mongodb/MongoDBPersistenceDriver.cpp      |   3 +-
 .../mongodb/MongoDBPersistenceDriver.h        |   2 +-
 .../mongodb/MongoDBUnitServerDataAccess.cpp   |   2 +-
 .../mongodb/MongoDBUnitServerDataAccess.h     |   2 +-
 .../mongodb/MongoDBUtilityDataAccess.cpp      |   2 +-
 .../mongodb/MongoDBUtilityDataAccess.h        |   2 +-
 .../persistence/persistence.h                 |   2 +-
 .../persistence/persistence_types.h           |   2 +-
 ChaosMetadataServiceClient/CMakeLists.txt     |   3 +
 .../ChaosMetadataServiceClient.cpp            |   2 +-
 .../ChaosMetadataServiceClient.h              |   2 +-
 .../api_proxy/ApiProxy.cpp                    |  14 +-
 .../api_proxy/ApiProxy.h                      |  30 +-
 .../api_proxy/ApiProxyManager.cpp             |   2 +-
 .../api_proxy/ApiProxyManager.h               |   2 +-
 ChaosMetadataServiceClient/api_proxy/api.h    |   7 +-
 .../api_proxy/control_unit/DeleteInstance.cpp |  40 ++
 .../api_proxy/control_unit/DeleteInstance.h   |  48 +++
 .../api_proxy/control_unit/GetInstance.cpp    |  39 ++
 .../api_proxy/control_unit/GetInstance.h      |  47 +++
 .../control_unit/SearchInstancesByUS.cpp      |  47 +++
 .../control_unit/SearchInstancesByUS.h        |  51 +++
 .../control_unit/SetInstanceDescription.cpp   | 118 ++++++
 .../control_unit/SetInstanceDescription.h     |  86 ++++
 .../api_proxy/node/GetNodeDescription.cpp     |   8 +-
 .../api_proxy/node/NodeSearch.cpp             |   6 +-
 .../api_proxy/node/NodeSearch.h               |   2 +-
 .../metadata_service_client_constants.h       |   2 +-
 .../metadata_service_client_types.h           |   2 +-
 ChaosMetadataServiceClientTest/main.cpp       |  76 ++--
 ChaosSnapshotUtility/main.cpp                 |   2 +-
 ChaosWANProxy/ChaosWANProxy.cpp               |   2 +-
 ChaosWANProxy/ChaosWANProxy.h                 |   2 +-
 ChaosWANProxy/DefaultWANInterfaceHandler.cpp  |   2 +-
 ChaosWANProxy/DefaultWANInterfaceHandler.h    |   2 +-
 ChaosWANProxy/api/AbstractApi.cpp             |   2 +-
 ChaosWANProxy/api/AbstractApi.h               |   2 +-
 ChaosWANProxy/api/AbstractApiGroup.cpp        |   2 +-
 ChaosWANProxy/api/AbstractApiGroup.h          |   2 +-
 ChaosWANProxy/api/PersistenceAccessor.cpp     |   2 +-
 ChaosWANProxy/api/PersistenceAccessor.h       |   2 +-
 ChaosWANProxy/api/api.h                       |   2 +-
 ChaosWANProxy/api/api_types.h                 |   2 +-
 .../producer/ProducerGetLastDatasetApi.cpp    |   2 +-
 .../api/producer/ProducerGetLastDatasetApi.h  |   2 +-
 ChaosWANProxy/api/producer/ProducerGroup.cpp  |   2 +-
 ChaosWANProxy/api/producer/ProducerGroup.h    |   2 +-
 .../api/producer/ProducerInsertDatasetApi.cpp |   2 +-
 .../api/producer/ProducerInsertDatasetApi.h   |   2 +-
 .../producer/ProducerRegisterDatasetApi.cpp   |   2 +-
 .../api/producer/ProducerRegisterDatasetApi.h |   2 +-
 ChaosWANProxy/global_constant.h               |   2 +-
 ChaosWANProxy/global_type.h                   |   2 +-
 ChaosWANProxy/main.cpp                        |   2 +-
 .../persistence/AbstractPersistenceDriver.h   |   2 +-
 .../persistence/DefaultPersistenceDriver.cpp  |   2 +-
 .../persistence/DefaultPersistenceDriver.h    |   2 +-
 .../utility/TypedConstrainedHashMap.h         |   2 +-
 .../wan_interface/AbstractWANInterface.cpp    |   2 +-
 .../wan_interface/AbstractWANInterface.h      |   2 +-
 .../AbstractWANInterfaceResponse.cpp          |   2 +-
 .../AbstractWANInterfaceResponse.h            |   2 +-
 .../wan_interface/BaseWANInterfaceHandler.cpp |   2 +-
 .../wan_interface/BaseWANInterfaceHandler.h   |   2 +-
 .../wan_interface/http/HTTPWANInterface.cpp   |   2 +-
 .../wan_interface/http/HTTPWANInterface.h     |   2 +-
 .../http/HTTPWANInterfaceRequest.cpp          |   2 +-
 .../http/HTTPWANInterfaceRequest.h            |   2 +-
 .../http/HTTPWANInterfaceStringResponse.cpp   |   2 +-
 .../http/HTTPWANInterfaceStringResponse.h     |   2 +-
 ChaosWANProxy/wan_interface/wan_interface.h   |   2 +-
 TestCDSQuery/QueryTest.cpp                    |   2 +-
 TestCDSQuery/QueryTest.h                      |   2 +-
 TestCDSQuery/main.cpp                         |   2 +-
 ccs/MainController.cpp                        |  12 +-
 ccs/ccs.pro                                   |  16 +-
 ccs/mainwindow.cpp                            |   8 +-
 ccs/mainwindow.h                              |   4 +-
 ccs/mainwindow.ui                             | 111 ++++-
 .../AttributeValueRangeDialog.cpp             |  66 +++
 .../control_unit/AttributeValueRangeDialog.h  |  45 ++
 .../control_unit/AttributeValueRangeDialog.ui | 129 ++++++
 .../control_unit/ControUnitInstanceEditor.cpp | 384 ++++++++++++++++--
 .../control_unit/ControUnitInstanceEditor.h   |  57 ++-
 .../control_unit/ControUnitInstanceEditor.ui  | 117 ++++--
 .../DriverDescriptionInputDialog.cpp          |  59 +++
 .../DriverDescriptionInputDialog.h            |  42 ++
 .../DriverDescriptionInputDialog.ui           | 131 ++++++
 ccs/node/unit_server/Test.qml                 |   5 -
 ccs/node/unit_server/TestForm.ui.qml          |   7 -
 ccs/node/unit_server/UnitServerEditor.cpp     | 120 +++++-
 ccs/node/unit_server/UnitServerEditor.h       |  19 +-
 ccs/node/unit_server/UnitServerEditor.ui      | 120 +++++-
 ccs/presenter/PresenterWidget.cpp             |   7 +-
 ccs/presenter/PresenterWidget.h               |  12 +-
 ccs/search/SearchNode.cpp                     |   2 +-
 ccs/search/SearchNodeResult.cpp               |  68 ++--
 ccs/search/SearchNodeResult.h                 |   7 +-
 ccs/search/searchnoderesult.ui                |  51 ++-
 chaos/common/CMakeLists.txt                   |  38 +-
 chaos/common/action/ActionDescriptor.cpp      |   2 +-
 chaos/common/action/ActionDescriptor.h        |   2 +-
 chaos/common/action/ChaosAction.h             |   2 +-
 chaos/common/action/DeclareAction.cpp         |   2 +-
 chaos/common/action/DeclareAction.h           |   2 +-
 chaos/common/action/DomainActions.cpp         |   2 +-
 chaos/common/action/DomainActions.h           |   2 +-
 .../async_central/AsyncCentralManager.cpp     |   2 +-
 .../async_central/AsyncCentralManager.h       |   2 +-
 chaos/common/async_central/TimerHandler.cpp   |   2 +-
 chaos/common/async_central/TimerHandler.h     |   2 +-
 chaos/common/batch_command/BatchCommand.cpp   |   2 +-
 chaos/common/batch_command/BatchCommand.h     |   4 +-
 .../batch_command/BatchCommandExecutor.cpp    |   2 +-
 .../batch_command/BatchCommandExecutor.h      |   2 +-
 .../caching_thread/BufferTracker.h            |   2 +-
 .../caching_thread/GarbageThread.h            |   2 +-
 .../DataAggregationInterface.h                |   2 +-
 .../tracker_interface/DataFetcherInterface.h  |   2 +-
 .../tracker_interface/EmbeddedDataTransform.h |   2 +-
 .../trackers/AbstractDeviceTracker.h          |   2 +-
 .../trackers/FetcherDeviceTracker.h           |   2 +-
 .../common_buffer/CommonBuffer.h              |   2 +-
 .../caching_system/common_buffer/Element.h    |   2 +-
 .../common_buffer/IteratorBase.h              |   2 +-
 .../common_buffer/IteratorGarbage.h           |   2 +-
 .../common_buffer/IteratorReader.h            |   2 +-
 .../common_buffer/MemoryAllocator.h           |   2 +-
 .../common_buffer/SmartPointer.h              |   2 +-
 .../data_element/AbstractDataElement.h        |   2 +-
 .../common_buffer/data_element/DataElement.h  |   2 +-
 .../common_buffer/data_element/SmartData.h    |   2 +-
 .../common_buffer/helper/IdFactory.h          |   2 +-
 .../common_buffer/helper/MillisTime.h         |   2 +-
 chaos/common/chaos_constants.h                |  14 +-
 .../configuration/GlobalConfiguration.cpp     |   2 +-
 .../configuration/GlobalConfiguration.h       |   2 +-
 chaos/common/data/BsonFragment.cpp            |   2 +-
 chaos/common/data/BsonFragment.h              |   2 +-
 chaos/common/data/CDataWrapper.cpp            |  18 +-
 chaos/common/data/CDataWrapper.h              |   6 +-
 chaos/common/data/CUSchemaDB.cpp              |   2 +-
 chaos/common/data/CUSchemaDB.h                |   2 +-
 chaos/common/data/DatasetDB.cpp               |   2 +-
 chaos/common/data/DatasetDB.h                 |   2 +-
 chaos/common/data/broker/DataBroker.cpp       |   2 +-
 chaos/common/data/broker/DataBroker.h         |   2 +-
 .../broker/publisher/PublisherDataService.cpp |   2 +-
 .../broker/publisher/PublisherDataService.h   |   2 +-
 .../data/broker/reader/ReaderDataService.cpp  |   2 +-
 .../data/broker/reader/ReaderDataService.h    |   2 +-
 chaos/common/data/cache/FastHash.cpp          |   2 +-
 chaos/common/data/cache/FastHash.h            |   2 +-
 chaos/common/data/cache/KeyGroupCache.cpp     |   2 +-
 chaos/common/data/cache/KeyGroupCache.h       |   2 +-
 chaos/common/data/cache/LFDataCache.cpp       |   2 +-
 chaos/common/data/cache/LFDataCache.h         |   2 +-
 chaos/common/data/entity/Entity.cpp           |   2 +-
 chaos/common/data/entity/Entity.h             |   2 +-
 chaos/common/data/entity/Record.h             |   2 +-
 chaos/common/data/entity_db/EntityDB.cpp      |   2 +-
 chaos/common/data/entity_db/EntityDB.h        |   2 +-
 .../entity_db/sqlite_impl/SQLiteEntityDB.cpp  |   2 +-
 .../entity_db/sqlite_impl/SQLiteEntityDB.h    |   2 +-
 chaos/common/direct_io/DirectIO.h             |   2 +-
 chaos/common/direct_io/DirectIOClient.cpp     |   2 +-
 chaos/common/direct_io/DirectIOClient.h       |   2 +-
 .../direct_io/DirectIOClientConnection.cpp    |   2 +-
 .../direct_io/DirectIOClientConnection.h      |   2 +-
 chaos/common/direct_io/DirectIODataPack.h     |   2 +-
 chaos/common/direct_io/DirectIODispatcher.cpp |   2 +-
 chaos/common/direct_io/DirectIODispatcher.h   |   2 +-
 .../direct_io/DirectIOEndpointHandler.h       |   2 +-
 chaos/common/direct_io/DirectIOForwarder.h    |   2 +-
 chaos/common/direct_io/DirectIOHandler.h      |   2 +-
 .../direct_io/DirectIOPerformanceSession.h    |   2 +-
 chaos/common/direct_io/DirectIOServer.cpp     |   2 +-
 chaos/common/direct_io/DirectIOServer.h       |   2 +-
 .../direct_io/DirectIOServerEndpoint.cpp      |   2 +-
 .../common/direct_io/DirectIOServerEndpoint.h |   2 +-
 .../direct_io/DirectIOServerPublicInterface.h |   2 +-
 chaos/common/direct_io/DirectIOTypes.h        |   2 +-
 .../common/direct_io/DirectIOURLManagment.cpp |   2 +-
 chaos/common/direct_io/DirectIOURLManagment.h |   2 +-
 .../direct_io/channel/DirectIOChannelGlobal.h |   2 +-
 .../channel/DirectIODeviceClientChannel.cpp   |   2 +-
 .../channel/DirectIODeviceClientChannel.h     |   2 +-
 .../channel/DirectIODeviceServerChannel.cpp   |   2 +-
 .../channel/DirectIODeviceServerChannel.h     |   2 +-
 .../DirectIOPerformanceClientChannel.cpp      |   2 +-
 .../DirectIOPerformanceClientChannel.h        |   2 +-
 .../DirectIOPerformanceServerChannel.cpp      |   2 +-
 .../DirectIOPerformanceServerChannel.h        |   2 +-
 .../DirectIOSystemAPIClientChannel.cpp        |   2 +-
 .../channel/DirectIOSystemAPIClientChannel.h  |   2 +-
 .../DirectIOSystemAPIServerChannel.cpp        |   2 +-
 .../channel/DirectIOSystemAPIServerChannel.h  |   2 +-
 .../channel/DirectIOVirtualChannel.cpp        |   2 +-
 .../channel/DirectIOVirtualChannel.h          |   2 +-
 .../channel/DirectIOVirtualClientChannel.cpp  |   2 +-
 .../channel/DirectIOVirtualClientChannel.h    |   2 +-
 .../channel/DirectIOVirtualServerChannel.cpp  |   2 +-
 .../channel/DirectIOVirtualServerChannel.h    |   2 +-
 .../direct_io/impl/ZMQDirectIOClient.cpp      |   2 +-
 .../common/direct_io/impl/ZMQDirectIOClient.h |   2 +-
 .../impl/ZMQDirectIOClientConnection.h        |   2 +-
 .../direct_io/impl/ZMQDirectIOServer.cpp      |   2 +-
 .../common/direct_io/impl/ZMQDirectIOServer.h |   2 +-
 .../common/direct_io/impl/ZMQSocketFeeder.cpp |   2 +-
 chaos/common/direct_io/impl/ZMQSocketFeeder.h |   2 +-
 .../dispatcher/AbstractCommandDispatcher.cpp  |   2 +-
 .../dispatcher/AbstractCommandDispatcher.h    |   2 +-
 chaos/common/dispatcher/ChaosDispatcher.h     |   2 +-
 .../dispatcher/DefaultCommandDispatcher.cpp   |   2 +-
 .../dispatcher/DefaultCommandDispatcher.h     |   2 +-
 .../dispatcher/DefaultEventDispatcher.cpp     |   2 +-
 .../dispatcher/DefaultEventDispatcher.h       |   2 +-
 .../dispatcher/DomainActionsScheduler.cpp     |   2 +-
 .../dispatcher/DomainActionsScheduler.h       |   2 +-
 chaos/common/endian.h                         |   2 +-
 chaos/common/event/AsioEventHandler.cpp       |   2 +-
 chaos/common/event/AsioEventHandler.h         |   2 +-
 chaos/common/event/AsioImplEventServer.cpp    |   2 +-
 chaos/common/event/AsioImplEventServer.h      |   4 +-
 chaos/common/event/EventForwarder.h           |   2 +-
 chaos/common/event/EventServer.cpp            |   2 +-
 chaos/common/event/EventServer.h              |   2 +-
 .../event/evt_desc/AlertEventDescriptor.cpp   |   2 +-
 .../event/evt_desc/AlertEventDescriptor.h     |   2 +-
 .../common/event/evt_desc/EventDescriptor.cpp |   2 +-
 chaos/common/event/evt_desc/EventDescriptor.h |   2 +-
 chaos/common/exception/CException.h           |   2 +-
 chaos/common/fsm/FinalStateMachine.cpp        |   9 -
 chaos/common/fsm/FinalStateMachine.h          |  80 ----
 chaos/common/general/Configurable.h           |   2 +-
 chaos/common/global.h                         |   4 +-
 chaos/common/io/IODataDriver.h                |   2 +-
 chaos/common/io/IODirectIODriver.cpp          |   2 +-
 chaos/common/io/IODirectIODriver.h            |   2 +-
 chaos/common/io/IOMemcachedIODriver.cpp       |   2 +-
 chaos/common/io/IOMemcachedIODriver.h         |   2 +-
 chaos/common/memory/ManagedMemory.cpp         |   2 +-
 chaos/common/memory/ManagedMemory.h           |   2 +-
 chaos/common/message/DeviceMessageChannel.cpp |   2 +-
 chaos/common/message/DeviceMessageChannel.h   |   2 +-
 chaos/common/message/MDSMessageChannel.cpp    |   2 +-
 chaos/common/message/MDSMessageChannel.h      |   2 +-
 chaos/common/message/MessageChannel.cpp       |  17 +-
 chaos/common/message/MessageChannel.h         |  11 +-
 chaos/common/message/MessageRequestFuture.cpp |  57 +--
 chaos/common/message/MessageRequestFuture.h   |   9 +-
 .../message/MultiAddressMessageChannel.cpp    |   4 +-
 .../message/MultiAddressMessageChannel.h      |   6 +-
 .../MultiAddressMessageRequestFuture.cpp      |   2 +-
 .../MultiAddressMessageRequestFuture.h        |   2 +-
 chaos/common/message/NodeMessageChannel.cpp   |   2 +-
 chaos/common/message/NodeMessageChannel.h     |   2 +-
 .../common/message/PerformanceNodeChannel.cpp |   2 +-
 chaos/common/message/PerformanceNodeChannel.h |   2 +-
 chaos/common/network/CNodeNetworkAddress.h    |   2 +-
 chaos/common/network/NetworkBroker.cpp        |   2 +-
 chaos/common/network/NetworkBroker.h          |   2 +-
 chaos/common/network/NetworkForwardInfo.h     |   2 +-
 chaos/common/network/PerformanceManagment.cpp |   2 +-
 chaos/common/network/PerformanceManagment.h   |   2 +-
 chaos/common/network/URL.cpp                  |   2 +-
 chaos/common/network/URL.h                    |   2 +-
 chaos/common/network/URLServiceFeeder.cpp     |   2 +-
 chaos/common/network/URLServiceFeeder.h       |   2 +-
 chaos/common/plugin/AbstractPlugin.cpp        |   2 +-
 chaos/common/plugin/AbstractPlugin.h          |   4 +-
 chaos/common/plugin/PluginDefinition.h        |   4 +-
 chaos/common/plugin/PluginDiscover.h          |   2 +-
 chaos/common/plugin/PluginInspector.h         |   2 +-
 chaos/common/plugin/PluginLoader.cpp          |   2 +-
 chaos/common/plugin/PluginLoader.h            |   2 +-
 chaos/common/pool/CPoolMemory.h               |   2 +-
 chaos/common/pool/CPoolMemoryObject.h         |   2 +-
 chaos/common/pool/ChaosPool.h                 |   2 +-
 .../pqueue/CObjectProcessingPriorityQueue.h   |   2 +-
 chaos/common/pqueue/CObjectProcessingQueue.h  |   2 +-
 .../pqueue/CObjectProcessingQueueListener.h   |   2 +-
 chaos/common/pqueue/ChaosProcessingQueue.h    |   2 +-
 chaos/common/property/Property.h              | 132 ++++++
 chaos/common/property/PropertyCollector.h     |  93 +++++
 chaos/common/rpc/ChaosRpc.h                   |   2 +-
 chaos/common/rpc/RpcClient.h                  |   2 +-
 chaos/common/rpc/RpcMessageForwarder.h        |   2 +-
 chaos/common/rpc/RpcServer.cpp                |   2 +-
 chaos/common/rpc/RpcServer.h                  |   2 +-
 chaos/common/rpc/RpcServerHandler.h           |   2 +-
 chaos/common/rpc/tcpuv/TCPUVServer.cpp        |   2 +-
 chaos/common/rpc/zmq/ZMQClient.cpp            |   2 +-
 chaos/common/rpc/zmq/ZMQServer.cpp            |   2 +-
 chaos/common/rpc/zmq/ZMQServer.h              |   2 +-
 chaos/common/sync_rpc/ChaosSyncRpc.h          |   2 +-
 chaos/common/sync_rpc/HTTPRpcSyncServer.cpp   |   2 +-
 chaos/common/sync_rpc/HTTPRpcSyncServer.h     |   2 +-
 chaos/common/sync_rpc/RpcSyncServer.cpp       |   2 +-
 chaos/common/sync_rpc/RpcSyncServer.h         |   2 +-
 chaos/common/thread/ChaosThread.h             |   2 +-
 .../thread/MultiKeyObjectWaitSemaphore.h      |   2 +-
 chaos/common/thread/ObjectWaitSemaphore.h     |   2 +-
 .../common/thread/TemplatedConcurrentQueue.h  |   2 +-
 chaos/common/thread/WaitSemaphore.h           |   2 +-
 chaos/common/utility/ArrayPointer.h           |   2 +-
 chaos/common/utility/Atomic.h                 |   2 +-
 chaos/common/utility/ConcuredUsedItem.h       |   2 +-
 chaos/common/utility/InetUtility.h            |   2 +-
 chaos/common/utility/InizializableService.cpp |   2 +-
 chaos/common/utility/InizializableService.h   |   2 +-
 chaos/common/utility/LoadableService.cpp      |   2 +-
 chaos/common/utility/LoadableService.h        |   2 +-
 chaos/common/utility/NamedService.cpp         |   2 +-
 chaos/common/utility/NamedService.h           |   2 +-
 chaos/common/utility/ObjectFactoryRegister.h  |   2 +-
 chaos/common/utility/ObjectInstancer.h        |   2 +-
 chaos/common/utility/ObjectSlot.h             |   2 +-
 .../utility/SingleBufferCircularBuffer.h      |   2 +-
 chaos/common/utility/Singleton.h              |   2 +-
 chaos/common/utility/StartableService.cpp     |   2 +-
 chaos/common/utility/StartableService.h       |   2 +-
 .../utility/TemplatedKeyObjectContainer.h     |   2 +-
 .../common/utility/TemplatedKeyValueHashMap.h |   2 +-
 chaos/common/utility/TimingUtil.h             |   2 +-
 chaos/common/utility/UUIDUtil.h               |   2 +-
 chaos/common/utility/UrlAccessibleService.h   |   2 +-
 chaos/cu_toolkit/ChaosCUToolkit.cpp           |   2 +-
 chaos/cu_toolkit/ChaosCUToolkit.h             |   2 +-
 .../CommandManager/CommandManager.cpp         |   2 +-
 .../CommandManager/CommandManager.h           |   2 +-
 .../CommandManagerDefaultAdapters.h           |   2 +-
 .../ControlManager/AbstractControlUnit.cpp    |   2 +-
 .../ControlManager/AbstractControlUnit.h      |   2 +-
 .../AttributeSharedCacheWrapper.cpp           |   2 +-
 .../AttributeSharedCacheWrapper.h             |   2 +-
 .../ControlManager/ControlManager.cpp         |   2 +-
 .../ControlManager/ControlManager.h           |   2 +-
 .../ControlManager/RTAbstractControlUnit.cpp  |   2 +-
 .../ControlManager/RTAbstractControlUnit.h    |   2 +-
 .../ControlManager/SCAbstractControlUnit.h    |   2 +-
 .../ControlManager/WorkUnitManagement.cpp     |   2 +-
 .../ControlManager/WorkUnitManagement.h       |   2 +-
 .../slow_command/SlowCommand.cpp              |   2 +-
 .../ControlManager/slow_command/SlowCommand.h |   4 +-
 .../slow_command/SlowCommandExecutor.cpp      |   2 +-
 .../slow_command/SlowCommandExecutor.h        |   2 +-
 .../command/SetAttributeCommand.cpp           |   2 +-
 .../command/SetAttributeCommand.h             |   2 +-
 chaos/cu_toolkit/DataManager/DataManager.cpp  |   2 +-
 chaos/cu_toolkit/DataManager/DataManager.h    |   2 +-
 .../DataManager/DataManagerException.h        |   2 +-
 .../cu_toolkit/DataManager/KeyDataStorage.cpp |   2 +-
 chaos/cu_toolkit/DataManager/KeyDataStorage.h |   2 +-
 .../driver_manager/DriverManager.cpp          |   2 +-
 .../cu_toolkit/driver_manager/DriverManager.h |   2 +-
 .../driver_manager/driver/AbstractDriver.cpp  |   2 +-
 .../driver_manager/driver/AbstractDriver.h    |   4 +-
 .../driver/AbstractDriverPlugin.cpp           |   2 +-
 .../driver/AbstractDriverPlugin.h             |   2 +-
 .../driver_manager/driver/DriverAccessor.cpp  |   2 +-
 .../driver_manager/driver/DriverAccessor.h    |   2 +-
 .../driver/DriverPluginLoader.cpp             |   2 +-
 .../driver/DriverPluginLoader.h               |   2 +-
 .../driver_manager/driver/DriverTypes.h       |   2 +-
 chaos/ui_toolkit/ChaosUIToolkit.cpp           |   2 +-
 chaos/ui_toolkit/ChaosUIToolkit.h             |   2 +-
 chaos/ui_toolkit/ChaosUIToolkitCWrapper.cc    |   2 +-
 chaos/ui_toolkit/ChaosUIToolkitCWrapper.h     |   4 +-
 .../HighLevelApi/DeviceController.cpp         |   2 +-
 .../HighLevelApi/DeviceController.h           |   2 +-
 chaos/ui_toolkit/HighLevelApi/HLDataApi.cpp   |   2 +-
 chaos/ui_toolkit/HighLevelApi/HLDataApi.h     |   2 +-
 .../HighLevelApi/HLInfrastructureApi.cpp      |   2 +-
 .../HighLevelApi/HLInfrastructureApi.h        |   2 +-
 chaos/ui_toolkit/LowLevelApi/LLDataApi.cpp    |   2 +-
 chaos/ui_toolkit/LowLevelApi/LLDataApi.h      |   2 +-
 chaos/ui_toolkit/LowLevelApi/LLRpcApi.cpp     |   2 +-
 chaos/ui_toolkit/LowLevelApi/LLRpcApi.h       |   2 +-
 chaos/ui_toolkit/caching/LiveDataFetcher.h    |   2 +-
 .../data_access/AbstractDataAccess.cpp        |   2 +-
 .../data_access/AbstractDataAccess.h          |   7 +-
 .../data_access/AbstractPersistenceDriver.cpp |   2 +-
 .../data_access/AbstractPersistenceDriver.h   |   2 +-
 .../persistence/mongodb/MongoDBAccessor.cpp   |  23 +-
 .../persistence/mongodb/MongoDBAccessor.h     |  20 +-
 .../mongodb/MongoDBHAConnectionManager.h      |   2 +-
 .../ChaosCLI.xcodeproj/project.pbxproj        |  12 +-
 example/ChaosCLI/main.cpp                     |   1 +
 .../project.pbxproj                           |  12 +-
 example/ChaosPerformanceTester/main.cpp       |   4 +-
 518 files changed, 3772 insertions(+), 947 deletions(-)
 create mode 100644 ChaosMetadataService/api/control_unit/ControlUnitGroup.cpp
 create mode 100644 ChaosMetadataService/api/control_unit/ControlUnitGroup.h
 create mode 100644 ChaosMetadataService/api/control_unit/DeleteInstance.cpp
 create mode 100644 ChaosMetadataService/api/control_unit/DeleteInstance.h
 create mode 100644 ChaosMetadataService/api/control_unit/GetInstance.cpp
 create mode 100644 ChaosMetadataService/api/control_unit/GetInstance.h
 create mode 100644 ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
 create mode 100644 ChaosMetadataService/api/control_unit/SearchInstancesByUS.h
 create mode 100644 ChaosMetadataService/api/control_unit/SetInstanceDescription.cpp
 create mode 100644 ChaosMetadataService/api/control_unit/SetInstanceDescription.h
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.cpp
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.cpp
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.cpp
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.cpp
 create mode 100644 ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h
 create mode 100644 ccs/node/control_unit/AttributeValueRangeDialog.cpp
 create mode 100644 ccs/node/control_unit/AttributeValueRangeDialog.h
 create mode 100644 ccs/node/control_unit/AttributeValueRangeDialog.ui
 create mode 100644 ccs/node/control_unit/DriverDescriptionInputDialog.cpp
 create mode 100644 ccs/node/control_unit/DriverDescriptionInputDialog.h
 create mode 100644 ccs/node/control_unit/DriverDescriptionInputDialog.ui
 delete mode 100644 ccs/node/unit_server/Test.qml
 delete mode 100644 ccs/node/unit_server/TestForm.ui.qml
 delete mode 100644 chaos/common/fsm/FinalStateMachine.cpp
 delete mode 100644 chaos/common/fsm/FinalStateMachine.h
 create mode 100644 chaos/common/property/Property.h
 create mode 100644 chaos/common/property/PropertyCollector.h

diff --git a/ArchitectureTests/thread/ObjectPriorityQueueTest.cpp b/ArchitectureTests/thread/ObjectPriorityQueueTest.cpp
index be93926e8..813bf1760 100644
--- a/ArchitectureTests/thread/ObjectPriorityQueueTest.cpp
+++ b/ArchitectureTests/thread/ObjectPriorityQueueTest.cpp
@@ -1,6 +1,6 @@
 /*
  *	ObjectPriorityQueueTest.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ArchitectureTests/thread/ObjectPriorityQueueTest.h b/ArchitectureTests/thread/ObjectPriorityQueueTest.h
index 4740a10c6..a8c9948ca 100644
--- a/ArchitectureTests/thread/ObjectPriorityQueueTest.h
+++ b/ArchitectureTests/thread/ObjectPriorityQueueTest.h
@@ -1,6 +1,6 @@
 /*
  *	ObjectPriorityQueueTest.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ArchitectureTests/thread/ObjectQueueTest.cpp b/ArchitectureTests/thread/ObjectQueueTest.cpp
index 07c5337c4..f07a397e3 100644
--- a/ArchitectureTests/thread/ObjectQueueTest.cpp
+++ b/ArchitectureTests/thread/ObjectQueueTest.cpp
@@ -1,6 +1,6 @@
 /*
  *	ObjectQueueTest.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ArchitectureTests/thread/ObjectQueueTest.h b/ArchitectureTests/thread/ObjectQueueTest.h
index 638847f03..3f5b9a957 100644
--- a/ArchitectureTests/thread/ObjectQueueTest.h
+++ b/ArchitectureTests/thread/ObjectQueueTest.h
@@ -1,6 +1,6 @@
 /*
  *	ObjectQueueTest.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ArchitectureTests/utility/HashMapTest.cpp b/ArchitectureTests/utility/HashMapTest.cpp
index 14129ddd9..7f756e728 100644
--- a/ArchitectureTests/utility/HashMapTest.cpp
+++ b/ArchitectureTests/utility/HashMapTest.cpp
@@ -1,6 +1,6 @@
 /*
  *	HashMapTest.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ArchitectureTests/utility/HashMapTest.h b/ArchitectureTests/utility/HashMapTest.h
index ad421ad8a..88b3e0d96 100644
--- a/ArchitectureTests/utility/HashMapTest.h
+++ b/ArchitectureTests/utility/HashMapTest.h
@@ -1,6 +1,6 @@
 /*
  *	HashMapTest.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/CHAOSFramework.xcodeproj/project.pbxproj b/CHAOSFramework.xcodeproj/project.pbxproj
index d167b2152..43a24a7af 100644
--- a/CHAOSFramework.xcodeproj/project.pbxproj
+++ b/CHAOSFramework.xcodeproj/project.pbxproj
@@ -46,6 +46,7 @@
 		32279F8516F8DEAF009EC7B9 /* DataBroker.h in Headers */ = {isa = PBXBuildFile; fileRef = 32279F8316F8DEAF009EC7B9 /* DataBroker.h */; };
 		32279F8B16FA36B6009EC7B9 /* PublisherDataService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32279F8916FA36B6009EC7B9 /* PublisherDataService.cpp */; };
 		32279F8C16FA36B6009EC7B9 /* PublisherDataService.h in Headers */ = {isa = PBXBuildFile; fileRef = 32279F8A16FA36B6009EC7B9 /* PublisherDataService.h */; };
+		322884451ADBBA1400CA1F4B /* PropertyCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 322884441ADBBA1400CA1F4B /* PropertyCollector.h */; };
 		3229700A18BCC6FE0004F70D /* DirectIOServerPublicInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 3229700918BCC6FE0004F70D /* DirectIOServerPublicInterface.h */; };
 		322D990118A95F9200C0864C /* QueryDataConsumer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 322D98FE18A95F9200C0864C /* QueryDataConsumer.cpp */; };
 		322D990218A95F9200C0864C /* QueryDataConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 322D98FF18A95F9200C0864C /* QueryDataConsumer.h */; };
@@ -70,6 +71,10 @@
 		3235FDCA1A6FF45600EC83A9 /* ProducerRegisterApi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3235FDC81A6FF45600EC83A9 /* ProducerRegisterApi.cpp */; };
 		3235FDD61A6FF8A800EC83A9 /* MongoDBUnitServerDataAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3235FDD41A6FF8A800EC83A9 /* MongoDBUnitServerDataAccess.cpp */; };
 		3235FDD91A6FFA6600EC83A9 /* MongoDBPersistenceDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3235FDD71A6FFA6600EC83A9 /* MongoDBPersistenceDriver.cpp */; };
+		32362C1A1ADC0FD2000CA079 /* SetInstanceDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32362C181ADC0FD2000CA079 /* SetInstanceDescription.cpp */; };
+		32362C1D1ADC0FDF000CA079 /* ControlUnitGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32362C1B1ADC0FDF000CA079 /* ControlUnitGroup.cpp */; };
+		32362C211ADD0C45000CA079 /* SetInstanceDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32362C1F1ADD0C45000CA079 /* SetInstanceDescription.cpp */; };
+		32362C221ADD0C45000CA079 /* SetInstanceDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 32362C201ADD0C45000CA079 /* SetInstanceDescription.h */; };
 		3244C0C6168CB96B007C802C /* Record.h in Headers */ = {isa = PBXBuildFile; fileRef = 3244C0C5168CB96B007C802C /* Record.h */; };
 		3244D11D15ECC25800FE2F86 /* AlertEventChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3244D11B15ECC25800FE2F86 /* AlertEventChannel.cpp */; };
 		3244D11E15ECC25800FE2F86 /* AlertEventChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3244D11C15ECC25800FE2F86 /* AlertEventChannel.h */; };
@@ -334,6 +339,14 @@
 		3287F7E717B27621009DD6ED /* DriverManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 326D3A6017B0CD01004601A8 /* DriverManager.h */; };
 		3289F9A5168508460080D93F /* SQLiteEntityDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3289F9A3168508460080D93F /* SQLiteEntityDB.cpp */; };
 		3289F9A6168508460080D93F /* SQLiteEntityDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 3289F9A4168508460080D93F /* SQLiteEntityDB.h */; };
+		328C872C1ADEA45E0047C79B /* SearchInstancesByUS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C872A1ADEA45E0047C79B /* SearchInstancesByUS.cpp */; };
+		328C872F1ADFC2D60047C79B /* GetInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C872D1ADFC2D60047C79B /* GetInstance.cpp */; };
+		328C87321ADFDB9A0047C79B /* SearchInstancesByUS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C87301ADFDB9A0047C79B /* SearchInstancesByUS.cpp */; };
+		328C87331ADFDB9A0047C79B /* SearchInstancesByUS.h in Headers */ = {isa = PBXBuildFile; fileRef = 328C87311ADFDB9A0047C79B /* SearchInstancesByUS.h */; };
+		328C87361ADFDD410047C79B /* GetInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C87341ADFDD410047C79B /* GetInstance.cpp */; };
+		328C87371ADFDD410047C79B /* GetInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 328C87351ADFDD410047C79B /* GetInstance.h */; };
+		328C873A1AE016DC0047C79B /* DeleteInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C87381AE016DC0047C79B /* DeleteInstance.cpp */; };
+		328C873E1AE01A590047C79B /* DeleteInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328C873B1AE01A520047C79B /* DeleteInstance.cpp */; };
 		328CC9D61763CCC7000B30B6 /* AbstractDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328CC9D41763CCC7000B30B6 /* AbstractDriver.cpp */; };
 		328CC9D71763CCC7000B30B6 /* AbstractDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 328CC9D51763CCC7000B30B6 /* AbstractDriver.h */; };
 		328D0FF11A8A034E001A2001 /* NodeSearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 328D0FEF1A8A034E001A2001 /* NodeSearch.cpp */; };
@@ -665,6 +678,8 @@
 		32279F8316F8DEAF009EC7B9 /* DataBroker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataBroker.h; sourceTree = "<group>"; };
 		32279F8916FA36B6009EC7B9 /* PublisherDataService.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PublisherDataService.cpp; sourceTree = "<group>"; };
 		32279F8A16FA36B6009EC7B9 /* PublisherDataService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublisherDataService.h; sourceTree = "<group>"; };
+		322884431ADBB55400CA1F4B /* Property.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Property.h; sourceTree = "<group>"; };
+		322884441ADBBA1400CA1F4B /* PropertyCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PropertyCollector.h; sourceTree = "<group>"; };
 		3229700918BCC6FE0004F70D /* DirectIOServerPublicInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectIOServerPublicInterface.h; sourceTree = "<group>"; };
 		322D98FE18A95F9200C0864C /* QueryDataConsumer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = QueryDataConsumer.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
 		322D98FF18A95F9200C0864C /* QueryDataConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QueryDataConsumer.h; sourceTree = "<group>"; };
@@ -703,6 +718,12 @@
 		3235FDD51A6FF8A800EC83A9 /* MongoDBUnitServerDataAccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MongoDBUnitServerDataAccess.h; sourceTree = "<group>"; };
 		3235FDD71A6FFA6600EC83A9 /* MongoDBPersistenceDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MongoDBPersistenceDriver.cpp; sourceTree = "<group>"; };
 		3235FDD81A6FFA6600EC83A9 /* MongoDBPersistenceDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MongoDBPersistenceDriver.h; sourceTree = "<group>"; };
+		32362C181ADC0FD2000CA079 /* SetInstanceDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetInstanceDescription.cpp; sourceTree = "<group>"; };
+		32362C191ADC0FD2000CA079 /* SetInstanceDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetInstanceDescription.h; sourceTree = "<group>"; };
+		32362C1B1ADC0FDF000CA079 /* ControlUnitGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ControlUnitGroup.cpp; sourceTree = "<group>"; };
+		32362C1C1ADC0FDF000CA079 /* ControlUnitGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ControlUnitGroup.h; sourceTree = "<group>"; };
+		32362C1F1ADD0C45000CA079 /* SetInstanceDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetInstanceDescription.cpp; sourceTree = "<group>"; };
+		32362C201ADD0C45000CA079 /* SetInstanceDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetInstanceDescription.h; sourceTree = "<group>"; };
 		3244C0C5168CB96B007C802C /* Record.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Record.h; sourceTree = "<group>"; };
 		3244D11B15ECC25800FE2F86 /* AlertEventChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlertEventChannel.cpp; sourceTree = "<group>"; };
 		3244D11C15ECC25800FE2F86 /* AlertEventChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlertEventChannel.h; sourceTree = "<group>"; };
@@ -1009,6 +1030,18 @@
 		32875F9917763B0800E33D6F /* AbstractPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AbstractPlugin.h; sourceTree = "<group>"; };
 		3289F9A3168508460080D93F /* SQLiteEntityDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLiteEntityDB.cpp; sourceTree = "<group>"; };
 		3289F9A4168508460080D93F /* SQLiteEntityDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLiteEntityDB.h; sourceTree = "<group>"; };
+		328C872A1ADEA45E0047C79B /* SearchInstancesByUS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SearchInstancesByUS.cpp; sourceTree = "<group>"; };
+		328C872B1ADEA45E0047C79B /* SearchInstancesByUS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchInstancesByUS.h; sourceTree = "<group>"; };
+		328C872D1ADFC2D60047C79B /* GetInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetInstance.cpp; sourceTree = "<group>"; };
+		328C872E1ADFC2D60047C79B /* GetInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetInstance.h; sourceTree = "<group>"; };
+		328C87301ADFDB9A0047C79B /* SearchInstancesByUS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SearchInstancesByUS.cpp; sourceTree = "<group>"; };
+		328C87311ADFDB9A0047C79B /* SearchInstancesByUS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchInstancesByUS.h; sourceTree = "<group>"; };
+		328C87341ADFDD410047C79B /* GetInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetInstance.cpp; sourceTree = "<group>"; };
+		328C87351ADFDD410047C79B /* GetInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetInstance.h; sourceTree = "<group>"; };
+		328C87381AE016DC0047C79B /* DeleteInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteInstance.cpp; sourceTree = "<group>"; };
+		328C87391AE016DC0047C79B /* DeleteInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteInstance.h; sourceTree = "<group>"; };
+		328C873B1AE01A520047C79B /* DeleteInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteInstance.cpp; sourceTree = "<group>"; };
+		328C873C1AE01A520047C79B /* DeleteInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteInstance.h; sourceTree = "<group>"; };
 		328CC9D41763CCC7000B30B6 /* AbstractDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractDriver.cpp; sourceTree = "<group>"; };
 		328CC9D51763CCC7000B30B6 /* AbstractDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractDriver.h; sourceTree = "<group>"; };
 		328D0FEF1A8A034E001A2001 /* NodeSearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeSearch.cpp; sourceTree = "<group>"; };
@@ -1233,8 +1266,6 @@
 		32DF604615E1505F00312C94 /* CustomEventDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomEventDescriptor.h; sourceTree = "<group>"; };
 		32E0EF3518CDB37D00CD1808 /* ZMQDirectIOClientConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ZMQDirectIOClientConnection.cpp; sourceTree = "<group>"; };
 		32E0EF3618CDB37D00CD1808 /* ZMQDirectIOClientConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZMQDirectIOClientConnection.h; sourceTree = "<group>"; };
-		32E2561717A67564000F4E20 /* FinalStateMachine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FinalStateMachine.cpp; sourceTree = "<group>"; };
-		32E2561817A67564000F4E20 /* FinalStateMachine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FinalStateMachine.h; sourceTree = "<group>"; };
 		32E977561A6E65B800D89C15 /* api_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = api_types.h; sourceTree = "<group>"; };
 		32E9A53C1A66A1B100545BB4 /* AbstractApi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractApi.cpp; sourceTree = "<group>"; };
 		32E9A53D1A66A1B100545BB4 /* AbstractApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractApi.h; sourceTree = "<group>"; };
@@ -1517,6 +1548,15 @@
 			path = reader;
 			sourceTree = "<group>";
 		};
+		322884421ADBB50300CA1F4B /* property */ = {
+			isa = PBXGroup;
+			children = (
+				322884431ADBB55400CA1F4B /* Property.h */,
+				322884441ADBBA1400CA1F4B /* PropertyCollector.h */,
+			);
+			path = property;
+			sourceTree = "<group>";
+		};
 		323236C9164573C60052CE06 /* ChaosMetadataService */ = {
 			isa = PBXGroup;
 			children = (
@@ -1602,6 +1642,38 @@
 			path = data_access;
 			sourceTree = "<group>";
 		};
+		32362C171ADC0FA1000CA079 /* control_unit */ = {
+			isa = PBXGroup;
+			children = (
+				32362C1B1ADC0FDF000CA079 /* ControlUnitGroup.cpp */,
+				32362C1C1ADC0FDF000CA079 /* ControlUnitGroup.h */,
+				32362C181ADC0FD2000CA079 /* SetInstanceDescription.cpp */,
+				32362C191ADC0FD2000CA079 /* SetInstanceDescription.h */,
+				328C872A1ADEA45E0047C79B /* SearchInstancesByUS.cpp */,
+				328C872B1ADEA45E0047C79B /* SearchInstancesByUS.h */,
+				328C872D1ADFC2D60047C79B /* GetInstance.cpp */,
+				328C872E1ADFC2D60047C79B /* GetInstance.h */,
+				328C87381AE016DC0047C79B /* DeleteInstance.cpp */,
+				328C87391AE016DC0047C79B /* DeleteInstance.h */,
+			);
+			path = control_unit;
+			sourceTree = "<group>";
+		};
+		32362C1E1ADD0BFF000CA079 /* control_unit */ = {
+			isa = PBXGroup;
+			children = (
+				32362C1F1ADD0C45000CA079 /* SetInstanceDescription.cpp */,
+				32362C201ADD0C45000CA079 /* SetInstanceDescription.h */,
+				328C87301ADFDB9A0047C79B /* SearchInstancesByUS.cpp */,
+				328C87311ADFDB9A0047C79B /* SearchInstancesByUS.h */,
+				328C87341ADFDD410047C79B /* GetInstance.cpp */,
+				328C87351ADFDD410047C79B /* GetInstance.h */,
+				328C873B1AE01A520047C79B /* DeleteInstance.cpp */,
+				328C873C1AE01A520047C79B /* DeleteInstance.h */,
+			);
+			path = control_unit;
+			sourceTree = "<group>";
+		};
 		3244C0BF168CACC1007C802C /* entity */ = {
 			isa = PBXGroup;
 			children = (
@@ -1952,31 +2024,31 @@
 				326DB42E14B38BC00018A8D0 /* version.h */,
 				326DB42F14B38BC00018A8D0 /* version.sh */,
 				32C100F4191B6EE100478F40 /* async_central */,
-				3296030E1876B45000CDCADA /* batch_command */,
-				32C3543317885A36009ED581 /* extension */,
-				32875F951776317F00E33D6F /* plugin */,
-				32BE864415A0CDC200818C39 /* log */,
 				326DB3B514B38BC00018A8D0 /* action */,
+				3296030E1876B45000CDCADA /* batch_command */,
 				326DB3BD14B38BC00018A8D0 /* bson */,
 				326DB3E314B38BC00018A8D0 /* configuration */,
-				329FFFCE1707128600D69CDE /* memory */,
+				32640A07169DCC1B00450962 /* caching_system */,
 				326DB3E614B38BC00018A8D0 /* data */,
-				326DB3EB14B38BC00018A8D0 /* fsm */,
 				326DB3EF14B38BC00018A8D0 /* dispatcher */,
+				32C3543317885A36009ED581 /* extension */,
 				326DB3FC14B38BC00018A8D0 /* exception */,
+				320C2180151B2BF200BD0F41 /* event */,
 				326DB3FE14B38BC00018A8D0 /* general */,
+				322884421ADBB50300CA1F4B /* property */,
+				32875F951776317F00E33D6F /* plugin */,
+				32BE864415A0CDC200818C39 /* log */,
+				329FFFCE1707128600D69CDE /* memory */,
 				326DB40214B38BC00018A8D0 /* io */,
 				3285569D17F2E20500A64ED2 /* direct_io */,
 				326DB40814B38BC00018A8D0 /* pool */,
 				326DB40C14B38BC00018A8D0 /* pqueue */,
 				326DB41114B38BC00018A8D0 /* rpc */,
 				32A91FC71A49AEC300DCF364 /* sync_rpc */,
-				320C2180151B2BF200BD0F41 /* event */,
 				32AAD78114CD630D005A097C /* message */,
 				326DB41914B38BC00018A8D0 /* network */,
 				326DB41D14B38BC00018A8D0 /* thread */,
 				326DB42414B38BC00018A8D0 /* utility */,
-				32640A07169DCC1B00450962 /* caching_system */,
 			);
 			path = common;
 			sourceTree = "<group>";
@@ -2056,15 +2128,6 @@
 			path = data;
 			sourceTree = "<group>";
 		};
-		326DB3EB14B38BC00018A8D0 /* fsm */ = {
-			isa = PBXGroup;
-			children = (
-				32E2561717A67564000F4E20 /* FinalStateMachine.cpp */,
-				32E2561817A67564000F4E20 /* FinalStateMachine.h */,
-			);
-			path = fsm;
-			sourceTree = "<group>";
-		};
 		326DB3EF14B38BC00018A8D0 /* dispatcher */ = {
 			isa = PBXGroup;
 			children = (
@@ -2336,6 +2399,7 @@
 				3208AAB71AC56A51000860D9 /* ApiProxy.cpp */,
 				3208AAB81AC56A51000860D9 /* ApiProxy.h */,
 				322E26721AC6E437002E5DA4 /* api.h */,
+				32362C1E1ADD0BFF000CA079 /* control_unit */,
 				3208AAB61AC55EA3000860D9 /* node */,
 			);
 			path = api_proxy;
@@ -2771,6 +2835,7 @@
 		32C7B8FA16DD35D7005B3B21 /* api */ = {
 			isa = PBXGroup;
 			children = (
+				32362C171ADC0FA1000CA079 /* control_unit */,
 				328E77FC1A7A937D0008C070 /* node */,
 				3235FDC41A6FF40100EC83A9 /* producer */,
 				328E78051A7A9FE40008C070 /* AbstractApi.cpp */,
@@ -2954,6 +3019,7 @@
 				326DB46614B38BC00018A8D0 /* ChaosDispatcher.h in Headers */,
 				53DADAAF19C8676C00E13DB2 /* SingletonOnArguments.h in Headers */,
 				32AB51CE1A1A69A300BB0BE3 /* DirectIOSystemAPIServerChannel.h in Headers */,
+				322884451ADBBA1400CA1F4B /* PropertyCollector.h in Headers */,
 				32F7FEAC18A5066600FC03AB /* FastDelegateBind.h in Headers */,
 				324A4B50191A41EF00975394 /* cstdint.h in Headers */,
 				324A4B4A191A41EF00975394 /* atomic_word.h in Headers */,
@@ -3249,9 +3315,12 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				328C87371ADFDD410047C79B /* GetInstance.h in Headers */,
 				3208AABE1AC56C1C000860D9 /* GetNodeDescription.h in Headers */,
 				3274A90D1AC2F214000C6A4D /* ApiProxyManager.h in Headers */,
+				328C87331ADFDB9A0047C79B /* SearchInstancesByUS.h in Headers */,
 				3208AABA1AC56A51000860D9 /* ApiProxy.h in Headers */,
+				32362C221ADD0C45000CA079 /* SetInstanceDescription.h in Headers */,
 				323386B21ACD731E008863DC /* NodeSearch.h in Headers */,
 				32661C6E1AA741D000F1A721 /* ChaosMetadataServiceClient.h in Headers */,
 			);
@@ -3532,10 +3601,13 @@
 				3235FDCA1A6FF45600EC83A9 /* ProducerRegisterApi.cpp in Sources */,
 				3235FDD91A6FFA6600EC83A9 /* MongoDBPersistenceDriver.cpp in Sources */,
 				32809C7F1A9C847400C02C12 /* ControlUnitDataAccess.cpp in Sources */,
+				32362C1D1ADC0FDF000CA079 /* ControlUnitGroup.cpp in Sources */,
 				32B9F3F41AC3E74C00380FE9 /* AbstractPersistenceDriver.cpp in Sources */,
 				32B9F3FA1AC4460A00380FE9 /* NodeGetDescription.cpp in Sources */,
 				328E78021A7A94810008C070 /* NodeRegister.cpp in Sources */,
+				328C873A1AE016DC0047C79B /* DeleteInstance.cpp in Sources */,
 				323236CB164573C60052CE06 /* main.cpp in Sources */,
+				328C872C1ADEA45E0047C79B /* SearchInstancesByUS.cpp in Sources */,
 				32FA1EF31A7A462200A46800 /* MDSBatchCommand.cpp in Sources */,
 				32809C7C1A9C7DDD00C02C12 /* MongoDBUtilityDataAccess.cpp in Sources */,
 				323386B71AD3C4C6008863DC /* MongoDBAccessor.cpp in Sources */,
@@ -3544,7 +3616,9 @@
 				32809C821A9C84F900C02C12 /* MongoDBControlUnitDataAccess.cpp in Sources */,
 				3235FDD61A6FF8A800EC83A9 /* MongoDBUnitServerDataAccess.cpp in Sources */,
 				32B3E11D1A7A3923007B7802 /* MDSBatchExecutor.cpp in Sources */,
+				328C872F1ADFC2D60047C79B /* GetInstance.cpp in Sources */,
 				328D0FF11A8A034E001A2001 /* NodeSearch.cpp in Sources */,
+				32362C1A1ADC0FD2000CA079 /* SetInstanceDescription.cpp in Sources */,
 				32B9F3F71AC4186300380FE9 /* NodeCreateUnitServer.cpp in Sources */,
 				328E78061A7A9FE40008C070 /* AbstractApi.cpp in Sources */,
 				32B9F3F31AC3E74C00380FE9 /* AbstractDataAccess.cpp in Sources */,
@@ -3788,8 +3862,12 @@
 			files = (
 				32661C6D1AA741D000F1A721 /* ChaosMetadataServiceClient.cpp in Sources */,
 				3208AABD1AC56C1C000860D9 /* GetNodeDescription.cpp in Sources */,
+				328C873E1AE01A590047C79B /* DeleteInstance.cpp in Sources */,
+				32362C211ADD0C45000CA079 /* SetInstanceDescription.cpp in Sources */,
 				3274A90C1AC2F214000C6A4D /* ApiProxyManager.cpp in Sources */,
 				3208AAB91AC56A51000860D9 /* ApiProxy.cpp in Sources */,
+				328C87361ADFDD410047C79B /* GetInstance.cpp in Sources */,
+				328C87321ADFDB9A0047C79B /* SearchInstancesByUS.cpp in Sources */,
 				323386B11ACD731E008863DC /* NodeSearch.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
diff --git a/ChaosDataExport/cde.cpp b/ChaosDataExport/cde.cpp
index 75cb920cf..4cde38fbf 100644
--- a/ChaosDataExport/cde.cpp
+++ b/ChaosDataExport/cde.cpp
@@ -1,6 +1,6 @@
 /*
  *	cde.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -40,6 +40,7 @@
 
 using namespace std;
 using namespace chaos;
+using namespace chaos::common::data;
 using namespace chaos::common::utility;
 using namespace chaos::ui;
 using namespace bson;
diff --git a/ChaosDataService/ChaosDataService.cpp b/ChaosDataService/ChaosDataService.cpp
index 5243ff46b..c4f015c84 100644
--- a/ChaosDataService/ChaosDataService.cpp
+++ b/ChaosDataService/ChaosDataService.cpp
@@ -1,6 +1,6 @@
 /*
  *	ChaosDataService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/ChaosDataService.h b/ChaosDataService/ChaosDataService.h
index 38397654d..a23939c06 100644
--- a/ChaosDataService/ChaosDataService.h
+++ b/ChaosDataService/ChaosDataService.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosDataService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/QueryDataConsumer.cpp b/ChaosDataService/QueryDataConsumer.cpp
index bddfaf7fd..0589b4f33 100644
--- a/ChaosDataService/QueryDataConsumer.cpp
+++ b/ChaosDataService/QueryDataConsumer.cpp
@@ -1,6 +1,6 @@
 /*
  *	QueryDataConsumer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/QueryDataConsumer.h b/ChaosDataService/QueryDataConsumer.h
index 2de32f03e..99095e4a5 100644
--- a/ChaosDataService/QueryDataConsumer.h
+++ b/ChaosDataService/QueryDataConsumer.h
@@ -1,6 +1,6 @@
 /*
  *	QueryDataConsumer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/StageDataConsumer.cpp b/ChaosDataService/StageDataConsumer.cpp
index 45c3180fc..7024c5f98 100644
--- a/ChaosDataService/StageDataConsumer.cpp
+++ b/ChaosDataService/StageDataConsumer.cpp
@@ -1,6 +1,6 @@
 /*
  *	StageDataConsumer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/StageDataConsumer.h b/ChaosDataService/StageDataConsumer.h
index 46cdb3b37..e610a2f56 100644
--- a/ChaosDataService/StageDataConsumer.h
+++ b/ChaosDataService/StageDataConsumer.h
@@ -1,6 +1,6 @@
 /*
  *	StageDataConsumer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/CacheDriver.cpp b/ChaosDataService/cache_system/CacheDriver.cpp
index 3b6039ea2..b1a6b067c 100644
--- a/ChaosDataService/cache_system/CacheDriver.cpp
+++ b/ChaosDataService/cache_system/CacheDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	CacheDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/CacheDriver.h b/ChaosDataService/cache_system/CacheDriver.h
index c78ad0540..62cb00ea7 100644
--- a/ChaosDataService/cache_system/CacheDriver.h
+++ b/ChaosDataService/cache_system/CacheDriver.h
@@ -1,6 +1,6 @@
 /*
  *	CacheDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/CouchbaseCacheDriver.cpp b/ChaosDataService/cache_system/CouchbaseCacheDriver.cpp
index a73b5a325..2bfee5338 100644
--- a/ChaosDataService/cache_system/CouchbaseCacheDriver.cpp
+++ b/ChaosDataService/cache_system/CouchbaseCacheDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	CouchbaseChacheDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/CouchbaseCacheDriver.h b/ChaosDataService/cache_system/CouchbaseCacheDriver.h
index 07b648968..11a9164a2 100644
--- a/ChaosDataService/cache_system/CouchbaseCacheDriver.h
+++ b/ChaosDataService/cache_system/CouchbaseCacheDriver.h
@@ -1,6 +1,6 @@
 /*
  *	CouchbaseCacheDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/MemcachedCacheDriver.h b/ChaosDataService/cache_system/MemcachedCacheDriver.h
index 1b780a80a..018c44423 100644
--- a/ChaosDataService/cache_system/MemcachedCacheDriver.h
+++ b/ChaosDataService/cache_system/MemcachedCacheDriver.h
@@ -1,6 +1,6 @@
 /*
  *	MemcachedCacheDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/cache_system.h b/ChaosDataService/cache_system/cache_system.h
index 380491fa8..62ffca5a1 100644
--- a/ChaosDataService/cache_system/cache_system.h
+++ b/ChaosDataService/cache_system/cache_system.h
@@ -1,6 +1,6 @@
 /*
  *	cache_system.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/cache_system/cache_system_types.h b/ChaosDataService/cache_system/cache_system_types.h
index 57944d208..872b1a455 100644
--- a/ChaosDataService/cache_system/cache_system_types.h
+++ b/ChaosDataService/cache_system/cache_system_types.h
@@ -1,6 +1,6 @@
 /*
  *	cache_system_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/DBDriver.cpp b/ChaosDataService/db_system/DBDriver.cpp
index c9f986879..15f89ddb1 100644
--- a/ChaosDataService/db_system/DBDriver.cpp
+++ b/ChaosDataService/db_system/DBDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	DBDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/DBDriver.h b/ChaosDataService/db_system/DBDriver.h
index 61e00b927..1a2201ef3 100644
--- a/ChaosDataService/db_system/DBDriver.h
+++ b/ChaosDataService/db_system/DBDriver.h
@@ -1,6 +1,6 @@
 /*
  *	DBDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/DBIndexCursor.cpp b/ChaosDataService/db_system/DBIndexCursor.cpp
index 43b067a92..5203b2e9a 100644
--- a/ChaosDataService/db_system/DBIndexCursor.cpp
+++ b/ChaosDataService/db_system/DBIndexCursor.cpp
@@ -1,6 +1,6 @@
 /*
  *	DBIndexCursor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/DBIndexCursor.h b/ChaosDataService/db_system/DBIndexCursor.h
index 456599657..fc577a65b 100644
--- a/ChaosDataService/db_system/DBIndexCursor.h
+++ b/ChaosDataService/db_system/DBIndexCursor.h
@@ -1,6 +1,6 @@
 /*
  *	DBIndexCursor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/MongoDBDriver.h b/ChaosDataService/db_system/MongoDBDriver.h
index d6c274dd7..352981520 100644
--- a/ChaosDataService/db_system/MongoDBDriver.h
+++ b/ChaosDataService/db_system/MongoDBDriver.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/MongoDBIndexCursor.cpp b/ChaosDataService/db_system/MongoDBIndexCursor.cpp
index ba11ee300..71ac5ce1d 100644
--- a/ChaosDataService/db_system/MongoDBIndexCursor.cpp
+++ b/ChaosDataService/db_system/MongoDBIndexCursor.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBIndexCursor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/MongoDBIndexCursor.h b/ChaosDataService/db_system/MongoDBIndexCursor.h
index 91b1756bf..2a2b47771 100644
--- a/ChaosDataService/db_system/MongoDBIndexCursor.h
+++ b/ChaosDataService/db_system/MongoDBIndexCursor.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBIndexCursor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/db_system.h b/ChaosDataService/db_system/db_system.h
index 58c274065..088827072 100644
--- a/ChaosDataService/db_system/db_system.h
+++ b/ChaosDataService/db_system/db_system.h
@@ -1,6 +1,6 @@
 /*
  *	index_system.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/db_system/db_system_types.h b/ChaosDataService/db_system/db_system_types.h
index 64df1475a..29c2e8a4c 100644
--- a/ChaosDataService/db_system/db_system_types.h
+++ b/ChaosDataService/db_system/db_system_types.h
@@ -1,6 +1,6 @@
 /*
  *	index_systsem_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/indexer/DataPackScanner.cpp b/ChaosDataService/indexer/DataPackScanner.cpp
index 6a6571a61..48d8cac65 100644
--- a/ChaosDataService/indexer/DataPackScanner.cpp
+++ b/ChaosDataService/indexer/DataPackScanner.cpp
@@ -1,6 +1,6 @@
 /*
  *	DataPackScanner.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/indexer/DataPackScanner.h b/ChaosDataService/indexer/DataPackScanner.h
index d4f590f69..760de0bd4 100644
--- a/ChaosDataService/indexer/DataPackScanner.h
+++ b/ChaosDataService/indexer/DataPackScanner.h
@@ -1,6 +1,6 @@
 /*
  *	DataPackScanner.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/indexer/StageDataVFileScanner.cpp b/ChaosDataService/indexer/StageDataVFileScanner.cpp
index 26dd7c2ba..8c6fd8e41 100644
--- a/ChaosDataService/indexer/StageDataVFileScanner.cpp
+++ b/ChaosDataService/indexer/StageDataVFileScanner.cpp
@@ -1,6 +1,6 @@
 /*
  *	StageDataVFileScanner.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/indexer/StageDataVFileScanner.h b/ChaosDataService/indexer/StageDataVFileScanner.h
index 567c24763..fa98f3726 100644
--- a/ChaosDataService/indexer/StageDataVFileScanner.h
+++ b/ChaosDataService/indexer/StageDataVFileScanner.h
@@ -1,6 +1,6 @@
 /*
  *	StageDataVFileScanner.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/main.cpp b/ChaosDataService/main.cpp
index b09fab8c1..03b6bf807 100644
--- a/ChaosDataService/main.cpp
+++ b/ChaosDataService/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	main.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/query_engine/QueryEngine.cpp b/ChaosDataService/query_engine/QueryEngine.cpp
index a10f4ed73..cb1f96f95 100644
--- a/ChaosDataService/query_engine/QueryEngine.cpp
+++ b/ChaosDataService/query_engine/QueryEngine.cpp
@@ -1,6 +1,6 @@
 /*
  *	QueryAnswerEngine.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/query_engine/QueryEngine.h b/ChaosDataService/query_engine/QueryEngine.h
index cdf8a67d2..a4d5c1728 100644
--- a/ChaosDataService/query_engine/QueryEngine.h
+++ b/ChaosDataService/query_engine/QueryEngine.h
@@ -1,6 +1,6 @@
 /*
  *	QueryAnswerEngine.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/DataBlock.h b/ChaosDataService/vfs/DataBlock.h
index 1867c53e4..737ea6ba7 100644
--- a/ChaosDataService/vfs/DataBlock.h
+++ b/ChaosDataService/vfs/DataBlock.h
@@ -1,6 +1,6 @@
 /*
  *	DataBlock.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSConsts.h b/ChaosDataService/vfs/VFSConsts.h
index 5a71ab755..c10b9a94a 100644
--- a/ChaosDataService/vfs/VFSConsts.h
+++ b/ChaosDataService/vfs/VFSConsts.h
@@ -1,6 +1,6 @@
 /*
  *	VFSConst.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSDataFile.cpp b/ChaosDataService/vfs/VFSDataFile.cpp
index f4cb79f89..32ec383b2 100644
--- a/ChaosDataService/vfs/VFSDataFile.cpp
+++ b/ChaosDataService/vfs/VFSDataFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSDataFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSDataFile.h b/ChaosDataService/vfs/VFSDataFile.h
index acf64f2ef..c63a5be6a 100644
--- a/ChaosDataService/vfs/VFSDataFile.h
+++ b/ChaosDataService/vfs/VFSDataFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSDataFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSDataWriteableFile.cpp b/ChaosDataService/vfs/VFSDataWriteableFile.cpp
index 0bf19bf73..5333128bc 100644
--- a/ChaosDataService/vfs/VFSDataWriteableFile.cpp
+++ b/ChaosDataService/vfs/VFSDataWriteableFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSDataWriteableFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSDataWriteableFile.h b/ChaosDataService/vfs/VFSDataWriteableFile.h
index 17a3fe4d2..9568259f2 100644
--- a/ChaosDataService/vfs/VFSDataWriteableFile.h
+++ b/ChaosDataService/vfs/VFSDataWriteableFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSDataWriteableFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSFile.cpp b/ChaosDataService/vfs/VFSFile.cpp
index eb5f4cd7a..3c3574a19 100644
--- a/ChaosDataService/vfs/VFSFile.cpp
+++ b/ChaosDataService/vfs/VFSFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSFile.h b/ChaosDataService/vfs/VFSFile.h
index 79bb15e7e..e11982b36 100644
--- a/ChaosDataService/vfs/VFSFile.h
+++ b/ChaosDataService/vfs/VFSFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSManager.cpp b/ChaosDataService/vfs/VFSManager.cpp
index febbbb482..3f860ce96 100644
--- a/ChaosDataService/vfs/VFSManager.cpp
+++ b/ChaosDataService/vfs/VFSManager.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSManager.h b/ChaosDataService/vfs/VFSManager.h
index 6d07f0d2e..9bd4cdaf8 100644
--- a/ChaosDataService/vfs/VFSManager.h
+++ b/ChaosDataService/vfs/VFSManager.h
@@ -1,6 +1,6 @@
 /*
  *	VFSManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSQuery.cpp b/ChaosDataService/vfs/VFSQuery.cpp
index b00cc8ca9..64c747fd1 100644
--- a/ChaosDataService/vfs/VFSQuery.cpp
+++ b/ChaosDataService/vfs/VFSQuery.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSQuery.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSQuery.h b/ChaosDataService/vfs/VFSQuery.h
index b237b5e68..c39eb0441 100644
--- a/ChaosDataService/vfs/VFSQuery.h
+++ b/ChaosDataService/vfs/VFSQuery.h
@@ -1,6 +1,6 @@
 /*
  *	VFSQuery.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageFile.cpp b/ChaosDataService/vfs/VFSStageFile.cpp
index 4d7277e6f..2254e8c75 100644
--- a/ChaosDataService/vfs/VFSStageFile.cpp
+++ b/ChaosDataService/vfs/VFSStageFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSStageFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageFile.h b/ChaosDataService/vfs/VFSStageFile.h
index cfdeb2bbd..977dda03f 100644
--- a/ChaosDataService/vfs/VFSStageFile.h
+++ b/ChaosDataService/vfs/VFSStageFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSStageFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageReadableFile.cpp b/ChaosDataService/vfs/VFSStageReadableFile.cpp
index 2d55fd875..20cadf445 100644
--- a/ChaosDataService/vfs/VFSStageReadableFile.cpp
+++ b/ChaosDataService/vfs/VFSStageReadableFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSStageReadableFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageReadableFile.h b/ChaosDataService/vfs/VFSStageReadableFile.h
index d4b02a73b..3fc49ab8b 100644
--- a/ChaosDataService/vfs/VFSStageReadableFile.h
+++ b/ChaosDataService/vfs/VFSStageReadableFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSStageRedeableFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageWriteableFile.cpp b/ChaosDataService/vfs/VFSStageWriteableFile.cpp
index be641e7d0..2b5681af8 100644
--- a/ChaosDataService/vfs/VFSStageWriteableFile.cpp
+++ b/ChaosDataService/vfs/VFSStageWriteableFile.cpp
@@ -1,6 +1,6 @@
 /*
  *	VFSStageWriteableFile.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSStageWriteableFile.h b/ChaosDataService/vfs/VFSStageWriteableFile.h
index c04dd8a86..35f338282 100644
--- a/ChaosDataService/vfs/VFSStageWriteableFile.h
+++ b/ChaosDataService/vfs/VFSStageWriteableFile.h
@@ -1,6 +1,6 @@
 /*
  *	VFSStageWriteableFile.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/VFSTypes.h b/ChaosDataService/vfs/VFSTypes.h
index 4649fea37..da742631c 100644
--- a/ChaosDataService/vfs/VFSTypes.h
+++ b/ChaosDataService/vfs/VFSTypes.h
@@ -1,6 +1,6 @@
 /*
  *	VFSTypes.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/query/DataBlockCache.cpp b/ChaosDataService/vfs/query/DataBlockCache.cpp
index 8bf388030..67819d477 100644
--- a/ChaosDataService/vfs/query/DataBlockCache.cpp
+++ b/ChaosDataService/vfs/query/DataBlockCache.cpp
@@ -1,6 +1,6 @@
 /*
  *	DataBlockCache.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/query/DataBlockCache.h b/ChaosDataService/vfs/query/DataBlockCache.h
index 1a8bcebee..311984af1 100644
--- a/ChaosDataService/vfs/query/DataBlockCache.h
+++ b/ChaosDataService/vfs/query/DataBlockCache.h
@@ -1,6 +1,6 @@
 /*
  *	DataBlockCache.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/query/DataBlockFetcher.cpp b/ChaosDataService/vfs/query/DataBlockFetcher.cpp
index c860399de..c709070f5 100644
--- a/ChaosDataService/vfs/query/DataBlockFetcher.cpp
+++ b/ChaosDataService/vfs/query/DataBlockFetcher.cpp
@@ -1,6 +1,6 @@
 /*
  *	DataBlockFetcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/query/DataBlockFetcher.h b/ChaosDataService/vfs/query/DataBlockFetcher.h
index aaee1dfed..df58681a1 100644
--- a/ChaosDataService/vfs/query/DataBlockFetcher.h
+++ b/ChaosDataService/vfs/query/DataBlockFetcher.h
@@ -1,6 +1,6 @@
 /*
  *	DataBlockFetcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/storage_system/PosixStorageDriver.cpp b/ChaosDataService/vfs/storage_system/PosixStorageDriver.cpp
index ca8a0fe95..35f3621f6 100644
--- a/ChaosDataService/vfs/storage_system/PosixStorageDriver.cpp
+++ b/ChaosDataService/vfs/storage_system/PosixStorageDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	PosixStorageDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/storage_system/PosixStorageDriver.h b/ChaosDataService/vfs/storage_system/PosixStorageDriver.h
index d465a4d73..a55b3b828 100644
--- a/ChaosDataService/vfs/storage_system/PosixStorageDriver.h
+++ b/ChaosDataService/vfs/storage_system/PosixStorageDriver.h
@@ -1,6 +1,6 @@
 /*
  *	PosixStorageDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/storage_system/StorageDriver.cpp b/ChaosDataService/vfs/storage_system/StorageDriver.cpp
index dd762eb53..a26ba41e5 100644
--- a/ChaosDataService/vfs/storage_system/StorageDriver.cpp
+++ b/ChaosDataService/vfs/storage_system/StorageDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	StorageDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/storage_system/StorageDriver.h b/ChaosDataService/vfs/storage_system/StorageDriver.h
index c18bd61f1..0a420ab76 100644
--- a/ChaosDataService/vfs/storage_system/StorageDriver.h
+++ b/ChaosDataService/vfs/storage_system/StorageDriver.h
@@ -1,6 +1,6 @@
 /*
  *	StorageDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/storage_system/storage_system.h b/ChaosDataService/vfs/storage_system/storage_system.h
index 233b7ef09..a02f046a1 100644
--- a/ChaosDataService/vfs/storage_system/storage_system.h
+++ b/ChaosDataService/vfs/storage_system/storage_system.h
@@ -1,6 +1,6 @@
 /*
  *	storage_system.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/vfs/vfs.h b/ChaosDataService/vfs/vfs.h
index 78edd958d..aeac982df 100644
--- a/ChaosDataService/vfs/vfs.h
+++ b/ChaosDataService/vfs/vfs.h
@@ -1,6 +1,6 @@
 /*
  *	vfs.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/worker/DataWorker.h b/ChaosDataService/worker/DataWorker.h
index 1c69cedce..a9bf4d805 100644
--- a/ChaosDataService/worker/DataWorker.h
+++ b/ChaosDataService/worker/DataWorker.h
@@ -1,6 +1,6 @@
 /*
  *	DataWorker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/worker/DeviceSharedDataWorker.cpp b/ChaosDataService/worker/DeviceSharedDataWorker.cpp
index c51165adf..befce4571 100644
--- a/ChaosDataService/worker/DeviceSharedDataWorker.cpp
+++ b/ChaosDataService/worker/DeviceSharedDataWorker.cpp
@@ -1,6 +1,6 @@
 /*
  *	DeviceDataWorker.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/worker/DeviceSharedDataWorker.h b/ChaosDataService/worker/DeviceSharedDataWorker.h
index 5bd4a269f..22c3195eb 100644
--- a/ChaosDataService/worker/DeviceSharedDataWorker.h
+++ b/ChaosDataService/worker/DeviceSharedDataWorker.h
@@ -1,6 +1,6 @@
 /*
  *	DeviceDataWorker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/worker/SnapshotCreationWorker.cpp b/ChaosDataService/worker/SnapshotCreationWorker.cpp
index 85266155b..7a2d5d888 100644
--- a/ChaosDataService/worker/SnapshotCreationWorker.cpp
+++ b/ChaosDataService/worker/SnapshotCreationWorker.cpp
@@ -1,6 +1,6 @@
 /*
  *	SnapshotCreationWorker.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosDataService/worker/SnapshotCreationWorker.h b/ChaosDataService/worker/SnapshotCreationWorker.h
index 75b418671..aed1c2a7b 100644
--- a/ChaosDataService/worker/SnapshotCreationWorker.h
+++ b/ChaosDataService/worker/SnapshotCreationWorker.h
@@ -1,6 +1,6 @@
 /*
  *	SnapshotCreationWorker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/CMakeLists.txt b/ChaosMetadataService/CMakeLists.txt
index af94c7c2b..913fbe80c 100644
--- a/ChaosMetadataService/CMakeLists.txt
+++ b/ChaosMetadataService/CMakeLists.txt
@@ -5,22 +5,27 @@ include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
 SET(cnd_src				main.cpp
 						ChaosMetadataService.cpp)
 
-SET(src  ${src}         ../chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.cpp
+SET(cnd_src  ${cnd_src} ../chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.cpp
                         ../chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp)
-SET(src  ${src}         ../chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
+SET(cnd_src  ${cnd_src} ../chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
 												../chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp)
 SET(cnd_src  ${cnd_src}	api/ApiManagment.cpp
                         api/AbstractApi.cpp
                         api/AbstractApiGroup.cpp)
 
 SET(cnd_src  ${cnd_src}	api/producer/ProducerApiGroup.cpp
-												api/producer/ProducerRegisterApi.cpp)
+						api/producer/ProducerRegisterApi.cpp)
+
+SET(cnd_src  ${cnd_src}	api/control_unit/ControlUnitGroup.cpp
+                        api/control_unit/SetInstanceDescription.cpp
+                        api/control_unit/SearchInstancesByUS.cpp
+                        api/control_unit/GetInstance.cpp)
 
 SET(cnd_src  ${cnd_src}	api/node/NodeGroup.cpp
                         api/node/NodeCreateUnitServer.cpp
-												api/node/NodeGetDescription.cpp
-												api/node/NodeRegister.cpp
-												api/node/NodeSearch.cpp)
+						api/node/NodeGetDescription.cpp
+						api/node/NodeRegister.cpp
+						api/node/NodeSearch.cpp)
 
 SET(cnd_src  ${cnd_src}	persistence/data_access/UnitServerDataAccess.cpp
                         persistence/data_access/NodeDataAccess.cpp
@@ -28,7 +33,7 @@ SET(cnd_src  ${cnd_src}	persistence/data_access/UnitServerDataAccess.cpp
                         persistence/data_access/ControlUnitDataAccess.cpp)
 
 SET(cnd_src  ${cnd_src}	persistence/mongodb/MongoDBPersistenceDriver.cpp
-						persistence/mongodb/MongoDBUnitServerDataAccess.cpp
+												persistence/mongodb/MongoDBUnitServerDataAccess.cpp
                         persistence/mongodb/MongoDBNodeDataAccess.cpp
                         persistence/mongodb/MongoDBUtilityDataAccess.cpp
                         persistence/mongodb/MongoDBControlUnitDataAccess.cpp)
diff --git a/ChaosMetadataService/ChaosMetadataService.cpp b/ChaosMetadataService/ChaosMetadataService.cpp
index 97c64a045..eb06d1ac1 100644
--- a/ChaosMetadataService/ChaosMetadataService.cpp
+++ b/ChaosMetadataService/ChaosMetadataService.cpp
@@ -1,6 +1,6 @@
 /*
  *	ChaosMetadataService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/ChaosMetadataService.h b/ChaosMetadataService/ChaosMetadataService.h
index e91432d7d..e48e5e654 100644
--- a/ChaosMetadataService/ChaosMetadataService.h
+++ b/ChaosMetadataService/ChaosMetadataService.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosMetadataService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/AbstractApi.cpp b/ChaosMetadataService/api/AbstractApi.cpp
index f6de733d4..c72fb985e 100644
--- a/ChaosMetadataService/api/AbstractApi.cpp
+++ b/ChaosMetadataService/api/AbstractApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/AbstractApi.h b/ChaosMetadataService/api/AbstractApi.h
index 6873936fa..a6072d745 100644
--- a/ChaosMetadataService/api/AbstractApi.h
+++ b/ChaosMetadataService/api/AbstractApi.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/AbstractApiGroup.cpp b/ChaosMetadataService/api/AbstractApiGroup.cpp
index 670795df5..1d4bd8473 100644
--- a/ChaosMetadataService/api/AbstractApiGroup.cpp
+++ b/ChaosMetadataService/api/AbstractApiGroup.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractApiGroup.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/AbstractApiGroup.h b/ChaosMetadataService/api/AbstractApiGroup.h
index 99027c81c..5a8be2691 100644
--- a/ChaosMetadataService/api/AbstractApiGroup.h
+++ b/ChaosMetadataService/api/AbstractApiGroup.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractGroup.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/ApiManagment.cpp b/ChaosMetadataService/api/ApiManagment.cpp
index a38472ad7..5f5c3fd18 100644
--- a/ChaosMetadataService/api/ApiManagment.cpp
+++ b/ChaosMetadataService/api/ApiManagment.cpp
@@ -1,6 +1,6 @@
 /*
  *	ApiManagment.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/ApiManagment.h b/ChaosMetadataService/api/ApiManagment.h
index fc7f1202a..5f66c475d 100644
--- a/ChaosMetadataService/api/ApiManagment.h
+++ b/ChaosMetadataService/api/ApiManagment.h
@@ -1,6 +1,6 @@
 /*
  *	ApiManagment.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/control_unit/ControlUnitGroup.cpp b/ChaosMetadataService/api/control_unit/ControlUnitGroup.cpp
new file mode 100644
index 000000000..704e003b1
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/ControlUnitGroup.cpp
@@ -0,0 +1,40 @@
+/*
+ *	ControlUnitGroup.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#include "ControlUnitGroup.h"
+#include "SetInstanceDescription.h"
+#include "SearchInstancesByUS.h"
+#include "GetInstance.h"
+#include "DeleteInstance.h"
+
+using namespace chaos::metadata_service::api::node;
+DEFINE_CLASS_FACTORY_NO_ALIAS(ControlUnitGroup, chaos::metadata_service::api::AbstractApiGroup);
+
+ControlUnitGroup::ControlUnitGroup():
+AbstractApiGroup("control_unit"){
+        //add api for UnitServer registration
+    addApi<SetInstanceDescription>();
+    addApi<SearchInstancesByUS>();
+    addApi<GetInstance>();
+    addApi<DeleteInstance>();
+}
+
+ControlUnitGroup::~ControlUnitGroup() {
+
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/api/control_unit/ControlUnitGroup.h b/ChaosMetadataService/api/control_unit/ControlUnitGroup.h
new file mode 100644
index 000000000..cb80afde2
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/ControlUnitGroup.h
@@ -0,0 +1,43 @@
+/*
+ *	ControlUnitGroup.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef __CHAOSFramework__UnitServerApiGroup__
+#define __CHAOSFramework__UnitServerApiGroup__
+
+#include "../AbstractApiGroup.h"
+
+namespace chaos {
+    namespace metadata_service {
+        namespace api {
+            namespace node {
+
+                    //! api group for the managment of the UnitServer
+                DECLARE_CLASS_FACTORY(ControlUnitGroup, AbstractApiGroup) {
+                    REGISTER_AND_DEFINE_DERIVED_CLASS_FACTORY_HELPER(ControlUnitGroup)
+                public:
+                    ControlUnitGroup();
+                    ~ControlUnitGroup();
+                };
+
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__UnitServerGroup__) */
diff --git a/ChaosMetadataService/api/control_unit/DeleteInstance.cpp b/ChaosMetadataService/api/control_unit/DeleteInstance.cpp
new file mode 100644
index 000000000..03bc5d6e3
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/DeleteInstance.cpp
@@ -0,0 +1,57 @@
+/*
+ *	DeleteInstance.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#include "DeleteInstance.h"
+
+#include <boost/format.hpp>
+
+using namespace chaos::common::data;
+using namespace chaos::metadata_service::api::node;
+
+#define CU_DI_INFO INFO_LOG(GetInstance)
+#define CU_DI_DBG  DBG_LOG(GetInstance)
+#define CU_DI_ERR  ERR_LOG(GetInstance)
+
+DeleteInstance::DeleteInstance():
+AbstractApi("deleteInstance"){
+
+}
+
+DeleteInstance::~DeleteInstance() {
+
+}
+
+CDataWrapper *DeleteInstance::execute(CDataWrapper *api_data,
+                                      bool& detach_data) throw(chaos::CException) {
+    int err = 0;
+    if(!api_data) {LOG_AND_TROW(CU_DI_ERR, -1, "Search parameter are needed");}
+    if(!api_data->hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) {LOG_AND_TROW(CU_DI_ERR, -2, "The ndk_unique_id key (representing the control unit uid) is mandatory");}
+    if(!api_data->hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {LOG_AND_TROW(CU_DI_ERR, -3, "The ndk_parent key (representing the unit server uid) is mandatory");}
+
+    const std::string cu_uid = api_data->getStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID);
+    const std::string us_uid = api_data->getStringValue(chaos::NodeDefinitionKey::NODE_PARENT);
+
+    GET_DATA_ACCESS(persistence::data_access::ControlUnitDataAccess, cu_da, -4)
+    if((err = cu_da->deleteInstanceDescription(us_uid,
+                                               cu_uid))){
+        LOG_AND_TROW(CU_DI_ERR, err, boost::str(boost::format("Error removing the control unit instance description for cuid:%1% and usuid:%2%") % cu_uid % cu_uid));
+    }
+    return NULL;
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/api/control_unit/DeleteInstance.h b/ChaosMetadataService/api/control_unit/DeleteInstance.h
new file mode 100644
index 000000000..8180d802a
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/DeleteInstance.h
@@ -0,0 +1,44 @@
+/*
+ *	DeleteInstance.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#ifndef __CHAOSFramework__DeleteInstance__
+#define __CHAOSFramework__DeleteInstance__
+
+#include "../AbstractApi.h"
+
+namespace chaos {
+    namespace metadata_service {
+        namespace api {
+            namespace node {
+                class DeleteInstance:
+                public AbstractApi {
+
+                public:
+                    DeleteInstance();
+                    ~DeleteInstance();
+                    chaos::common::data::CDataWrapper *execute(chaos::common::data::CDataWrapper *api_data,
+                                                               bool& detach_data) throw(chaos::CException);
+                };
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__DeleteInstance__) */
diff --git a/ChaosMetadataService/api/control_unit/GetInstance.cpp b/ChaosMetadataService/api/control_unit/GetInstance.cpp
new file mode 100644
index 000000000..1ae3483f2
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/GetInstance.cpp
@@ -0,0 +1,59 @@
+/*
+ *	GetInstance.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#include "GetInstance.h"
+
+#include <boost/format.hpp>
+
+using namespace chaos::common::data;
+using namespace chaos::metadata_service::api::node;
+
+#define CU_GI_INFO INFO_LOG(GetInstance)
+#define CU_GI_DBG  DBG_LOG(GetInstance)
+#define CU_GI_ERR  ERR_LOG(GetInstance)
+
+GetInstance::GetInstance():
+AbstractApi("getInstance"){
+
+}
+
+GetInstance::~GetInstance() {
+
+}
+
+CDataWrapper *GetInstance::execute(CDataWrapper *api_data,
+                                   bool& detach_data) throw(chaos::CException) {
+
+    if(!api_data) {LOG_AND_TROW(CU_GI_ERR, -1, "Search parameter are needed");}
+    if(!api_data->hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) {LOG_AND_TROW(CU_GI_ERR, -2, "The ndk_unique_id key (representing the control unit uid) is mandatory");}
+    if(!api_data->hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {LOG_AND_TROW(CU_GI_ERR, -3, "The ndk_parent key (representing the unit server uid) is mandatory");}
+
+    int err = 0;
+    CDataWrapper *result = NULL;
+    const std::string cu_uid = api_data->getStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID);
+    const std::string us_uid = api_data->getStringValue(chaos::NodeDefinitionKey::NODE_PARENT);
+    GET_DATA_ACCESS(persistence::data_access::ControlUnitDataAccess, cu_da, -4)
+    if((err = cu_da->getInstanceDescription(us_uid,
+                                            cu_uid,
+                                            &result))){
+        LOG_AND_TROW(CU_GI_ERR, err, boost::str(boost::format("Error fetching the control unit instance description for cuid:%1% and usuid:%2%") % cu_uid % cu_uid));
+    }
+    return result;
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/api/control_unit/GetInstance.h b/ChaosMetadataService/api/control_unit/GetInstance.h
new file mode 100644
index 000000000..694bb6865
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/GetInstance.h
@@ -0,0 +1,44 @@
+/*
+ *	GetInstance.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#ifndef __CHAOSFramework__GetInstance__
+#define __CHAOSFramework__GetInstance__
+
+#include "../AbstractApi.h"
+
+namespace chaos {
+    namespace metadata_service {
+        namespace api {
+            namespace node {
+                class GetInstance:
+                public AbstractApi {
+
+                public:
+                    GetInstance();
+                    ~GetInstance();
+                    chaos::common::data::CDataWrapper *execute(chaos::common::data::CDataWrapper *api_data,
+                                                               bool& detach_data) throw(chaos::CException);
+                };
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__GetInstance__) */
diff --git a/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
new file mode 100644
index 000000000..5252811b7
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
@@ -0,0 +1,89 @@
+/*
+ *	SearchInstancesByUS.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#include "SearchInstancesByUS.h"
+
+using namespace chaos::common::data;
+using namespace chaos::metadata_service::api::node;
+
+#define CU_SI_INFO INFO_LOG(SearchInstancesByUS)
+#define CU_SI_DBG  DBG_LOG(SearchInstancesByUS)
+#define CU_SI_ERR  ERR_LOG(SearchInstancesByUS)
+
+SearchInstancesByUS::SearchInstancesByUS():
+AbstractApi("searchInstancesByUS"){
+
+}
+
+SearchInstancesByUS::~SearchInstancesByUS() {
+
+}
+
+CDataWrapper *SearchInstancesByUS::execute(CDataWrapper *api_data,
+                                       bool& detach_data) throw(chaos::CException) {
+    int err = 0;
+    uint32_t last_sequence_id = 0;
+    uint32_t page_length = 30;
+    std::vector<boost::shared_ptr<CDataWrapper> > page_result;
+    std::vector<std::string> cu_type_filter;
+
+    chaos::common::data::CDataWrapper *result = NULL;
+    if(!api_data) {LOG_AND_TROW(CU_SI_ERR, -1, "Search parameter are needed");}
+    if(!api_data->hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {LOG_AND_TROW(CU_SI_ERR, -2, "The ndk_parent key (representing the unit server uid) is mandatory");}
+
+    if(api_data->hasKey("last_node_sequence_id")) {
+        last_sequence_id = (uint32_t)api_data->getInt32Value("last_node_sequence_id");
+        CU_SI_DBG << "Need to load a new page starting from id:" << last_sequence_id;
+    }
+    if(api_data->hasKey("result_page_length")) {
+        page_length = (uint32_t)api_data->getInt32Value("result_page_length");
+        CU_SI_DBG << "The length of the page has been set to:" << page_length;
+    }
+
+    if(api_data->hasKey("control_unit_implementation")) {
+        auto_ptr<CMultiTypeDataArrayWrapper> cu_t_arr(api_data->getVectorValue("control_unit_implementation"));
+        for(int idx = 0;
+            idx < cu_t_arr->size();
+            idx++) {
+            cu_type_filter.push_back(cu_t_arr->getStringElementAtIndex(idx));
+        }
+    }
+
+        //get node data access
+    GET_DATA_ACCESS(persistence::data_access::ControlUnitDataAccess, cu_da, -2)
+    if((err = cu_da->searchInstanceForUnitServer(page_result,
+                                                 api_data->getStringValue(chaos::NodeDefinitionKey::NODE_PARENT),
+                                                 cu_type_filter,
+                                                 last_sequence_id,
+                                                 page_length))) {
+        LOG_AND_TROW(CU_SI_ERR, err, "Error performing search page")
+    } else {
+        if(page_result.size() > 0) {
+            //add found element to result
+            result = new CDataWrapper();
+            for (std::vector<boost::shared_ptr<CDataWrapper> >::iterator it = page_result.begin();
+                 it != page_result.end();
+                 it++) {
+                result->appendCDataWrapperToArray(*it->get());
+            }
+            result->finalizeArrayForKey("node_search_result_page");
+        }
+    }
+    return result;
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/api/control_unit/SearchInstancesByUS.h b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.h
new file mode 100644
index 000000000..bb56ec339
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.h
@@ -0,0 +1,45 @@
+/*
+ *	SearchInstancesByUS.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef __CHAOSFramework__SearchInstancesByUS__
+#define __CHAOSFramework__SearchInstancesByUS__
+
+#include "../AbstractApi.h"
+
+namespace chaos {
+    namespace metadata_service {
+        namespace api {
+            namespace node {
+
+                class SearchInstancesByUS:
+                public AbstractApi {
+
+                public:
+                    SearchInstancesByUS();
+                    ~SearchInstancesByUS();
+                    chaos::common::data::CDataWrapper *execute(chaos::common::data::CDataWrapper *api_data,
+                                                               bool& detach_data) throw(chaos::CException);
+                };
+                
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__SearchInstancesByUS__) */
diff --git a/ChaosMetadataService/api/control_unit/SetInstanceDescription.cpp b/ChaosMetadataService/api/control_unit/SetInstanceDescription.cpp
new file mode 100644
index 000000000..49185c139
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/SetInstanceDescription.cpp
@@ -0,0 +1,83 @@
+/*
+ *	SetInstanceDescription.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#include "SetInstanceDescription.h"
+#include <boost/format.hpp>
+
+using namespace chaos::common::data;
+using namespace chaos::metadata_service::api::node;
+
+#define CUCUI_INFO INFO_LOG(SetInstanceDescription)
+#define CUCUI_DBG  DBG_LOG(SetInstanceDescription)
+#define CUCUI_ERR  ERR_LOG(SetInstanceDescription)
+
+SetInstanceDescription::SetInstanceDescription():
+AbstractApi("setInstanceDescription"){
+
+}
+
+SetInstanceDescription::~SetInstanceDescription() {
+
+}
+
+chaos::common::data::CDataWrapper *SetInstanceDescription::execute(chaos::common::data::CDataWrapper *api_data,
+                                                                   bool& detach_data) throw(chaos::CException) {
+
+    int err = 0;
+    bool presence = false;
+    if(!api_data->hasKey(NodeDefinitionKey::NODE_UNIQUE_ID)) {
+        LOG_AND_TROW(CUCUI_ERR, -1, "Node unique id is mandatory")
+    }
+    if(!api_data->hasKey("instance_description")) {
+        LOG_AND_TROW(CUCUI_ERR, -2, "the instance description need to be associated to a the key 'instance_description'");
+    }
+
+        //!get the unit server data access
+    persistence::data_access::ControlUnitDataAccess *cu_da = getPersistenceDriver()->getDataAccess<persistence::data_access::ControlUnitDataAccess>();
+    persistence::data_access::NodeDataAccess *n_da = getPersistenceDriver()->getDataAccess<persistence::data_access::NodeDataAccess>();
+    if((err = n_da->checkNodePresence(api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID), presence))){
+        LOG_AND_TROW(CUCUI_ERR, err, "Error checking node presence")
+    }
+    if (!presence) {
+        auto_ptr<CDataWrapper> node_min_dec(new CDataWrapper());
+        node_min_dec->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID));
+        node_min_dec->addStringValue(NodeDefinitionKey::NODE_TYPE, api_data->getStringValue(NodeDefinitionKey::NODE_TYPE));
+            //need to be create a new empty node
+        if((err = cu_da->insertNewControlUnit(*node_min_dec.get()))) {
+            LOG_AND_TROW(CUCUI_ERR, err, "Error during new node creation")
+        }
+    }
+
+        //set the instance whiting the control unit node
+        //create the subobject for the instance that need to be insert within the global node
+    auto_ptr<CDataWrapper> instance_desc(api_data->getCSDataValue("instance_description"));
+        //insert the instance
+    if(!instance_desc->hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {
+        LOG_AND_TROW(CUCUI_ERR, -3, "The instance description need to have the unique id of the parent unit server.")
+    }
+
+    if(!instance_desc->hasKey("control_unit_implementation")) {
+        LOG_AND_TROW(CUCUI_ERR, -3, "The control unit implementaiton is mandatory within the instance description")
+    }
+        //
+    if((err = cu_da->setInstanceDescription(api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID), *instance_desc.get()))) {
+        LOG_AND_TROW(CUCUI_ERR, err, boost::str(boost::format("Error creating control unit instance description for node:%1%") % api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID)))
+    }
+    return NULL;
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/api/control_unit/SetInstanceDescription.h b/ChaosMetadataService/api/control_unit/SetInstanceDescription.h
new file mode 100644
index 000000000..1cf2bc8d4
--- /dev/null
+++ b/ChaosMetadataService/api/control_unit/SetInstanceDescription.h
@@ -0,0 +1,44 @@
+/*
+ *	SetInstanceDescription.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef __CHAOSFramework__SetInstanceDescription__
+#define __CHAOSFramework__SetInstanceDescription__
+
+#include "../AbstractApi.h"
+
+namespace chaos {
+    namespace metadata_service {
+        namespace api {
+            namespace node {
+
+                class SetInstanceDescription:
+                public AbstractApi {
+
+                public:
+                    SetInstanceDescription();
+                    ~SetInstanceDescription();
+                    chaos::common::data::CDataWrapper *execute(chaos::common::data::CDataWrapper *api_data,
+                                                               bool& detach_data) throw(chaos::CException);
+                };
+
+            }
+        }
+    }
+}
+#endif /* defined(__CHAOSFramework__SetInstanceDescription__) */
diff --git a/ChaosMetadataService/api/node/NodeCreateUnitServer.cpp b/ChaosMetadataService/api/node/NodeCreateUnitServer.cpp
index d6ce92cef..c668ef200 100644
--- a/ChaosMetadataService/api/node/NodeCreateUnitServer.cpp
+++ b/ChaosMetadataService/api/node/NodeCreateUnitServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeCreateUnitServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeCreateUnitServer.h b/ChaosMetadataService/api/node/NodeCreateUnitServer.h
index a5f88930c..a4e40e5ed 100644
--- a/ChaosMetadataService/api/node/NodeCreateUnitServer.h
+++ b/ChaosMetadataService/api/node/NodeCreateUnitServer.h
@@ -1,6 +1,6 @@
 /*
  *	NodeCreateUnitServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeGetDescription.cpp b/ChaosMetadataService/api/node/NodeGetDescription.cpp
index 86f8f63da..7c2fd88bc 100644
--- a/ChaosMetadataService/api/node/NodeGetDescription.cpp
+++ b/ChaosMetadataService/api/node/NodeGetDescription.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeGetDescription.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeGetDescription.h b/ChaosMetadataService/api/node/NodeGetDescription.h
index 38f8593b3..05002e267 100644
--- a/ChaosMetadataService/api/node/NodeGetDescription.h
+++ b/ChaosMetadataService/api/node/NodeGetDescription.h
@@ -1,6 +1,6 @@
 /*
  *	NodeGetDescription.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeGroup.cpp b/ChaosMetadataService/api/node/NodeGroup.cpp
index d49b7bb93..6eb3ed7d3 100644
--- a/ChaosMetadataService/api/node/NodeGroup.cpp
+++ b/ChaosMetadataService/api/node/NodeGroup.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeGroup.h b/ChaosMetadataService/api/node/NodeGroup.h
index 029fac6c5..8792477b5 100644
--- a/ChaosMetadataService/api/node/NodeGroup.h
+++ b/ChaosMetadataService/api/node/NodeGroup.h
@@ -1,6 +1,6 @@
 /*
  *	NodeApiGroup.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeRegister.cpp b/ChaosMetadataService/api/node/NodeRegister.cpp
index 13e0489ee..47382d282 100644
--- a/ChaosMetadataService/api/node/NodeRegister.cpp
+++ b/ChaosMetadataService/api/node/NodeRegister.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeRegister.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeRegister.h b/ChaosMetadataService/api/node/NodeRegister.h
index 55ae7ee33..0f81e1cbe 100644
--- a/ChaosMetadataService/api/node/NodeRegister.h
+++ b/ChaosMetadataService/api/node/NodeRegister.h
@@ -1,6 +1,6 @@
 /*
  *	NodeRegister.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeSearch.cpp b/ChaosMetadataService/api/node/NodeSearch.cpp
index df555e0ba..c89e1f091 100644
--- a/ChaosMetadataService/api/node/NodeSearch.cpp
+++ b/ChaosMetadataService/api/node/NodeSearch.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeSearch.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/node/NodeSearch.h b/ChaosMetadataService/api/node/NodeSearch.h
index ec88379e0..74ff9e611 100644
--- a/ChaosMetadataService/api/node/NodeSearch.h
+++ b/ChaosMetadataService/api/node/NodeSearch.h
@@ -1,6 +1,6 @@
 /*
  *	NodeSearch.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/producer/ProducerApiGroup.cpp b/ChaosMetadataService/api/producer/ProducerApiGroup.cpp
index 1afbb8218..e56051636 100644
--- a/ChaosMetadataService/api/producer/ProducerApiGroup.cpp
+++ b/ChaosMetadataService/api/producer/ProducerApiGroup.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerApiGroup.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/producer/ProducerApiGroup.h b/ChaosMetadataService/api/producer/ProducerApiGroup.h
index b591cf2c8..9b52a01f6 100644
--- a/ChaosMetadataService/api/producer/ProducerApiGroup.h
+++ b/ChaosMetadataService/api/producer/ProducerApiGroup.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerApiGroup.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/producer/ProducerRegisterApi.cpp b/ChaosMetadataService/api/producer/ProducerRegisterApi.cpp
index 71ff5921c..d6b6eb288 100644
--- a/ChaosMetadataService/api/producer/ProducerRegisterApi.cpp
+++ b/ChaosMetadataService/api/producer/ProducerRegisterApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerRegisterApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/api/producer/ProducerRegisterApi.h b/ChaosMetadataService/api/producer/ProducerRegisterApi.h
index eeb5477cd..d3412094f 100644
--- a/ChaosMetadataService/api/producer/ProducerRegisterApi.h
+++ b/ChaosMetadataService/api/producer/ProducerRegisterApi.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerRegisterApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/MDSBatchCommand.cpp b/ChaosMetadataService/batch/MDSBatchCommand.cpp
index 6f5734e45..57c213d0b 100644
--- a/ChaosMetadataService/batch/MDSBatchCommand.cpp
+++ b/ChaosMetadataService/batch/MDSBatchCommand.cpp
@@ -1,6 +1,6 @@
 /*
  *  BatchCommand.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/MDSBatchCommand.h b/ChaosMetadataService/batch/MDSBatchCommand.h
index c5ab698f0..224153d62 100644
--- a/ChaosMetadataService/batch/MDSBatchCommand.h
+++ b/ChaosMetadataService/batch/MDSBatchCommand.h
@@ -1,6 +1,6 @@
 /*
  *	BatchCommand.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/MDSBatchExecutor.cpp b/ChaosMetadataService/batch/MDSBatchExecutor.cpp
index 4893dd366..ac2e5b1d5 100644
--- a/ChaosMetadataService/batch/MDSBatchExecutor.cpp
+++ b/ChaosMetadataService/batch/MDSBatchExecutor.cpp
@@ -1,6 +1,6 @@
 /*
  *	MDSBatchExecutor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/MDSBatchExecutor.h b/ChaosMetadataService/batch/MDSBatchExecutor.h
index 2966ba2cc..37eb75ca4 100644
--- a/ChaosMetadataService/batch/MDSBatchExecutor.h
+++ b/ChaosMetadataService/batch/MDSBatchExecutor.h
@@ -1,6 +1,6 @@
 /*
  *	BatchExecutor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/mds_service_batch.h b/ChaosMetadataService/batch/mds_service_batch.h
index 703f7f9eb..c1799b5b2 100644
--- a/ChaosMetadataService/batch/mds_service_batch.h
+++ b/ChaosMetadataService/batch/mds_service_batch.h
@@ -1,6 +1,6 @@
 /*
  *	mds_service_batch.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.cpp b/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.cpp
index 428dc8ffe..387507cef 100644
--- a/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.cpp
+++ b/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.cpp
@@ -1,6 +1,6 @@
 /*
  *	UnitServerAckCommand.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.h b/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.h
index 0ed165254..066653588 100644
--- a/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.h
+++ b/ChaosMetadataService/batch/unit_server/UnitServerAckBatchCommand.h
@@ -1,6 +1,6 @@
 /*
  *	UnitServerAckCommand.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/batch/unit_server/unit_server_batch.h b/ChaosMetadataService/batch/unit_server/unit_server_batch.h
index 607e8f02f..6502f7030 100644
--- a/ChaosMetadataService/batch/unit_server/unit_server_batch.h
+++ b/ChaosMetadataService/batch/unit_server/unit_server_batch.h
@@ -1,6 +1,6 @@
 /*
  *	unit_server_batch.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/main.cpp b/ChaosMetadataService/main.cpp
index 8ee5480d5..d25eef9ad 100644
--- a/ChaosMetadataService/main.cpp
+++ b/ChaosMetadataService/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	main.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/mds_types.h b/ChaosMetadataService/mds_types.h
index af8f9a728..2127efd77 100644
--- a/ChaosMetadataService/mds_types.h
+++ b/ChaosMetadataService/mds_types.h
@@ -1,6 +1,6 @@
 /*
  *  mds_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.cpp b/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.cpp
index b2fcddd91..d83f5b0d5 100644
--- a/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.cpp
+++ b/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	ControlUnitDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.h b/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.h
index 1466aa78c..d863b1b81 100644
--- a/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.h
+++ b/ChaosMetadataService/persistence/data_access/ControlUnitDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	ControlUnitDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -21,7 +21,11 @@
 #define __CHAOSFramework__ControlUnitDataAccess__
 
 #include "../persistence.h"
+
 #include <chaos/common/data/CDatawrapper.h>
+
+#include <boost/smart_ptr.hpp>
+
 namespace chaos {
     namespace metadata_service {
         namespace persistence {
@@ -47,6 +51,22 @@ namespace chaos {
                     virtual int checkDatasetPresence(chaos::common::data::CDataWrapper& dataset_description) = 0;
                     
                     virtual int getLastDataset(chaos::common::data::CDataWrapper& dataset_description) = 0;
+
+                    virtual int setInstanceDescription(const std::string& cu_unique_id,
+                                                       chaos::common::data::CDataWrapper& instance_description) = 0;
+
+                    virtual int searchInstanceForUnitServer(std::vector<boost::shared_ptr<common::data::CDataWrapper> >& result_page,
+                                                            const std::string& unit_server_uid,
+                                                            std::vector<std::string> cu_type_filter,
+                                                            uint32_t last_sequence_id,
+                                                            uint32_t results_for_page) = 0;
+
+                    virtual int getInstanceDescription(const std::string& unit_server_uid,
+                                                       const std::string& control_unit_uid,
+                                                       chaos::common::data::CDataWrapper **result) = 0;
+
+                    virtual int deleteInstanceDescription(const std::string& unit_server_uid,
+                                                          const std::string& control_unit_uid) = 0;
                 };
                 
             }
diff --git a/ChaosMetadataService/persistence/data_access/DataAccess.h b/ChaosMetadataService/persistence/data_access/DataAccess.h
index c57766c41..f875356c7 100644
--- a/ChaosMetadataService/persistence/data_access/DataAccess.h
+++ b/ChaosMetadataService/persistence/data_access/DataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	DataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/NodeDataAccess.cpp b/ChaosMetadataService/persistence/data_access/NodeDataAccess.cpp
index eb4488ac2..14154a63f 100644
--- a/ChaosMetadataService/persistence/data_access/NodeDataAccess.cpp
+++ b/ChaosMetadataService/persistence/data_access/NodeDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeRegisterApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/NodeDataAccess.h b/ChaosMetadataService/persistence/data_access/NodeDataAccess.h
index 56cb8b6ca..ececd95c8 100644
--- a/ChaosMetadataService/persistence/data_access/NodeDataAccess.h
+++ b/ChaosMetadataService/persistence/data_access/NodeDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	NodeDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.cpp b/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.cpp
index 4045c87da..6e800cd8f 100644
--- a/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.cpp
+++ b/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	UnitServerDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.h b/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.h
index e99f4afbd..8eecd4762 100644
--- a/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.h
+++ b/ChaosMetadataService/persistence/data_access/UnitServerDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	UnitServerDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/UtilityDataAccess.cpp b/ChaosMetadataService/persistence/data_access/UtilityDataAccess.cpp
index 883dfafa9..6a9e8e3c0 100644
--- a/ChaosMetadataService/persistence/data_access/UtilityDataAccess.cpp
+++ b/ChaosMetadataService/persistence/data_access/UtilityDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	UtilityDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/data_access/UtilityDataAccess.h b/ChaosMetadataService/persistence/data_access/UtilityDataAccess.h
index 4cae4168f..c88f56e60 100644
--- a/ChaosMetadataService/persistence/data_access/UtilityDataAccess.h
+++ b/ChaosMetadataService/persistence/data_access/UtilityDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	UtilityDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
index c24c3036f..60ceec7da 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBControlUnitDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -29,19 +29,29 @@
 #define MDBCUDA_ERR  ERR_LOG(MongoDBControlUnitDataAccess)
 
 using namespace chaos::common::data;
+
+using namespace chaos::service_common::persistence::mongodb;
+
 using namespace chaos::metadata_service::persistence::mongodb;
 
 MongoDBControlUnitDataAccess::MongoDBControlUnitDataAccess(const boost::shared_ptr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection):
 MongoDBAccessor(_connection){
-    
+
 }
 
 MongoDBControlUnitDataAccess::~MongoDBControlUnitDataAccess() {
-    
+
 }
 
 int MongoDBControlUnitDataAccess::insertNewControlUnit(chaos::common::data::CDataWrapper& control_unit_description) {
     int err = 0;
+    if(!control_unit_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) {
+            //set he ndoe type as control unit
+        control_unit_description.addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    }
+    if((err = node_data_access->insertNewNode(control_unit_description))) {
+        MDBCUDA_ERR << "Error:" << err << " adding new node for control unit";
+    }
     return err;
 }
 
@@ -66,3 +76,251 @@ int MongoDBControlUnitDataAccess::getLastDataset(chaos::common::data::CDataWrapp
     int err = 0;
     return err;
 }
+
+int MongoDBControlUnitDataAccess::setInstanceDescription(const std::string& cu_unique_id,
+                                                         chaos::common::data::CDataWrapper& instance_description) {
+    int err = 0;
+        //allocate data block on vfat
+    mongo::BSONObjBuilder bson_find;
+    mongo::BSONObjBuilder updated_field;
+    mongo::BSONObjBuilder bson_update;
+    MDBCUDA_DBG << instance_description.getJSONString();
+    try {
+
+        if(!instance_description.hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) return -1;
+
+            //serach criteria
+        bson_find   << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
+        << chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT;
+
+            //add the load_at_startup field
+        updated_field << chaos::NodeDefinitionKey::NODE_PARENT << instance_description.getStringValue(chaos::NodeDefinitionKey::NODE_PARENT)
+        << "auto_load" << (bool)(instance_description.hasKey("auto_load")?instance_description.getBoolValue("auto_load"):false);
+
+            //add unit server parent
+
+        if(instance_description.hasKey("load_parameter")) {
+            updated_field << "load_parameter" << instance_description.getStringValue("load_parameter");
+        }
+
+        if(instance_description.hasKey("control_unit_implementation")) {
+            updated_field << "control_unit_implementation" << instance_description.getStringValue("control_unit_implementation");
+        }
+
+            //check if have the driver description
+        if(instance_description.hasKey("driver_description")) {
+                //get the contained control unit type
+            mongo::BSONArrayBuilder bab;
+            auto_ptr<CMultiTypeDataArrayWrapper> drv_array(instance_description.getVectorValue("driver_description"));
+            for(int idx = 0;
+                idx < drv_array->size();
+                idx++) {
+                auto_ptr<CDataWrapper> driver_desc(drv_array->getCDataWrapperElementAtIndex(idx));
+                if(driver_desc->hasKey("name") &&
+                   driver_desc->hasKey("version")&&
+                   driver_desc->hasKey("init_parameter")) {
+                    int size;
+                    CDataWrapper d;
+                    d.addStringValue("name", driver_desc->getStringValue("name"));
+                    d.addStringValue("version", driver_desc->getStringValue("version"));
+                    d.addStringValue("init_parameter", driver_desc->getStringValue("init_parameter"));
+                    bab << mongo::BSONObj(d.getBSONRawData(size));
+                }
+
+            }
+                //bind the array to the key
+            updated_field.appendArray("driver_description", bab.arr());
+        }
+
+            //check if we have the attribute setup
+        if(instance_description.hasKey("attribute_value_descriptions")) {
+                //get the contained control unit type
+            mongo::BSONArrayBuilder bab;
+            auto_ptr<CMultiTypeDataArrayWrapper> attr_array(instance_description.getVectorValue("attribute_value_descriptions"));
+            for(int idx = 0;
+                idx < attr_array->size();
+                idx++) {
+                auto_ptr<CDataWrapper> attr_desc(attr_array->getCDataWrapperElementAtIndex(idx));
+                if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME) &&
+                   attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
+                    int size;
+                    CDataWrapper a;
+                    a.addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME, attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME));
+                    a.addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE, attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE));
+                    if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) a.addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE, attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE));
+                    if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) a.addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE, attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE));
+                        //add object to array
+                    bab << mongo::BSONObj(a.getBSONRawData(size));
+                }
+            }
+                //bind the array to the key
+            updated_field.appendArray("attribute_value_descriptions", bab.arr());
+        }
+
+
+        mongo::BSONObj query = bson_find.obj();
+        mongo::BSONObj update = BSON("$set" << BSON("instance_description" << updated_field.obj()));
+
+        DEBUG_CODE(MDBCUDA_DBG << "setInstanceDescription update ---------------------------------------------";)
+        DEBUG_CODE(MDBCUDA_DBG << "Query: "  << query.jsonString();)
+        DEBUG_CODE(MDBCUDA_DBG << "Update: "  << update.jsonString();)
+        DEBUG_CODE(MDBCUDA_DBG << "setInstanceDescription update ---------------------------------------------";)
+
+            //set the instance parameter within the node representing the control unit
+        if((err = connection->update(MONGO_DB_COLLECTION_NAME(getDatabaseName().c_str(), MONGODB_COLLECTION_NODES),
+                                     query,
+                                     update))) {
+            MDBCUDA_ERR << "Error updating unit server";
+        }
+    } catch (const mongo::DBException &e) {
+        MDBCUDA_ERR << e.what();
+        err = -1;
+    } catch (const chaos::CException &e) {
+        MDBCUDA_ERR << e.what();
+        err = e.errorCode;
+    }
+    return err;
+}
+
+int MongoDBControlUnitDataAccess::searchInstanceForUnitServer(std::vector<boost::shared_ptr<chaos::common::data::CDataWrapper> >& result_page,
+                                                              const std::string& unit_server_uid,
+                                                              std::vector<std::string> cu_type_filter,
+                                                              uint32_t last_sequence_id,
+                                                              uint32_t results_for_page) {
+    int err = 0;
+    mongo::BSONObjBuilder   bson_find;
+    mongo::BSONArrayBuilder bson_find_or;
+    mongo::BSONArrayBuilder bson_find_and;
+    SearchResult            paged_result;
+
+        //compose query
+
+        //filter on sequence, type and unit server
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    bson_find_and << BSON(boost::str(boost::format("instance_description.%1%") % chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_uid);
+
+        //add cu types
+    if(cu_type_filter.size()) {
+        for(std::vector<std::string>::iterator it = cu_type_filter.begin();
+            it != cu_type_filter.end();
+            it++) {
+            bson_find_or << BSON("instance_description.control_unit_implementation" << *it);
+        }
+        bson_find_and << BSON("$or" << bson_find_or.arr());
+    }
+    bson_find.appendArray("$and", bson_find_and.obj());
+        // filter on node unique id
+
+    mongo::BSONObj q = bson_find.obj();
+        // mongo::BSONObj p =  BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID<<1);
+    DEBUG_CODE(MDBCUDA_DBG << "searchInstanceForUnitServer performPagedQuery ---------------------------------------------";)
+    DEBUG_CODE(MDBCUDA_DBG << "Query: "  << q.jsonString();)
+    DEBUG_CODE(MDBCUDA_DBG << "searchInstanceForUnitServer performPagedQuery ---------------------------------------------";)
+
+        //perform the search for the query page
+    if((err = performPagedQuery(paged_result,
+                                MONGO_DB_COLLECTION_NAME(getDatabaseName().c_str(), MONGODB_COLLECTION_NODES),
+                                q,
+                                NULL,//return only the control unit unique id
+                                NULL,
+                                results_for_page))) {
+        MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+        DEBUG_CODE(MDBCUDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
+        if(paged_result.size()) {
+            for (SearchResultIterator it = paged_result.begin();
+                 it != paged_result.end();
+                 it++) {
+                boost::shared_ptr<CDataWrapper> result_intance(new CDataWrapper());
+                result_intance->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, it->getStringField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID));
+
+                mongo::BSONObj instance_description = it->getObjectField("instance_description");
+                result_intance->addStringValue("control_unit_implementation", instance_description.getStringField("control_unit_implementation"));
+
+                result_page.push_back(result_intance);
+            }
+        }
+    }
+    return err;
+}
+
+int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& unit_server_uid,
+                                                         const std::string& control_unit_uid,
+                                                         chaos::common::data::CDataWrapper **result) {
+    int err = 0;
+    mongo::BSONObj          q_result;
+    mongo::BSONObjBuilder   bson_find;
+    SearchResult            paged_result;
+
+    bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
+    bson_find << boost::str(boost::format("instance_description.%1%") % chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
+    mongo::BSONObj q = bson_find.obj();
+    DEBUG_CODE(MDBCUDA_DBG << "getInstanceDescription findOne ---------------------------------------------";)
+    DEBUG_CODE(MDBCUDA_DBG << "Query: "  << q.jsonString();)
+    DEBUG_CODE(MDBCUDA_DBG << "getInstanceDescription findOne ---------------------------------------------";)
+    if((err = connection->findOne(q_result,
+                                  MONGO_DB_COLLECTION_NAME(getDatabaseName().c_str(), MONGODB_COLLECTION_NODES),
+                                  q))){
+        MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else if(q_result.isEmpty()){
+        MDBCUDA_DBG << "No instance description found for control unit:" <<control_unit_uid << " with parent:" << unit_server_uid;
+    } else {
+        mongo::BSONObj instance_description = q_result.getObjectField("instance_description");
+        *result = new CDataWrapper();
+        (*result)->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, q_result.getStringField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID));
+
+
+        (*result)->addStringValue(chaos::NodeDefinitionKey::NODE_PARENT, instance_description.getStringField(chaos::NodeDefinitionKey::NODE_PARENT));
+        if(instance_description.hasField("auto_load"))(*result)->addBoolValue("auto_load", instance_description.getBoolField("auto_load"));
+        if(instance_description.hasField("load_parameter"))(*result)->addStringValue("load_parameter", instance_description.getStringField("load_parameter"));
+        if(instance_description.hasField("control_unit_implementation"))(*result)->addStringValue("control_unit_implementation", instance_description.getStringField("control_unit_implementation"));
+
+        if(instance_description.hasField("driver_description")) {
+            std::vector< mongo::BSONElement > drv_descriptions;
+            instance_description.getObjectField("driver_description").elems(drv_descriptions);
+            for(std::vector< mongo::BSONElement >::iterator it = drv_descriptions.begin();
+                it != drv_descriptions.end();
+                it++) {
+                CDataWrapper driver_desc(it->Obj().objdata());
+                (*result)->appendCDataWrapperToArray(driver_desc);
+            }
+            (*result)->finalizeArrayForKey("driver_description");
+        }
+
+        if(instance_description.hasField("attribute_value_descriptions")) {
+            std::vector< mongo::BSONElement > attr_descriptions;
+            instance_description.getObjectField("attribute_value_descriptions").elems(attr_descriptions);
+            for(std::vector< mongo::BSONElement >::iterator it = attr_descriptions.begin();
+                it != attr_descriptions.end();
+                it++) {
+                CDataWrapper driver_desc(it->Obj().objdata());
+                (*result)->appendCDataWrapperToArray(driver_desc);
+            }
+            (*result)->finalizeArrayForKey("attribute_value_descriptions");
+        }
+    }
+    return err;
+}
+
+int MongoDBControlUnitDataAccess::deleteInstanceDescription(const std::string& unit_server_uid,
+                                                            const std::string& control_unit_uid) {
+    int err = 0;
+    mongo::BSONObj          q_result;
+    mongo::BSONObjBuilder   bson_find;
+
+    bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
+    bson_find << boost::str(boost::format("instance_description.%1%") % chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
+    mongo::BSONObj q = bson_find.obj();
+    mongo::BSONObj u = BSON("$unset" << BSON("instance_description" << ""));
+    DEBUG_CODE(MDBCUDA_DBG << "deleteInstanceDescription update ---------------------------------------------";)
+    DEBUG_CODE(MDBCUDA_DBG << "Query: "  << q.jsonString();)
+    DEBUG_CODE(MDBCUDA_DBG << "Update: "  << u.jsonString();)
+    DEBUG_CODE(MDBCUDA_DBG << "deleteInstanceDescription update ---------------------------------------------";)
+        //remove the field of the document
+    if((err = connection->update(MONGO_DB_COLLECTION_NAME(getDatabaseName().c_str(), MONGODB_COLLECTION_NODES),
+                                 q,
+                                 u))) {
+        MDBCUDA_ERR << "Error removing control unit instance from node";
+    }
+    return err;
+}
\ No newline at end of file
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.h b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.h
index d29888a07..bb4e85a2e 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.h
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBControlUnitDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -27,6 +27,9 @@
 #include <chaos/common/utility/ObjectInstancer.h>
 #include <chaos_service_common/persistence/mongodb/MongoDBAccessor.h>
 
+#include <string>
+#include <vector>
+
 namespace chaos {
     namespace metadata_service {
         namespace persistence {
@@ -54,8 +57,24 @@ namespace chaos {
                     int checkDatasetPresence(chaos::common::data::CDataWrapper& dataset_description);
                     
                     int getLastDataset(chaos::common::data::CDataWrapper& dataset_description);
+
+                    int setInstanceDescription(const std::string& cu_unique_id,
+                                               chaos::common::data::CDataWrapper& instance_description);
+
+                    int searchInstanceForUnitServer(std::vector<boost::shared_ptr<chaos::common::data::CDataWrapper> >& result_page,
+                                                    const std::string& unit_server_uid,
+                                                    std::vector<std::string> cu_type_filter,
+                                                    uint32_t last_sequence_id,
+                                                    uint32_t results_for_page);
+
+                    int getInstanceDescription(const std::string& unit_server_uid,
+                                               const std::string& control_unit_uid,
+                                               chaos::common::data::CDataWrapper **result);
+
+                    int deleteInstanceDescription(const std::string& unit_server_uid,
+                                                  const std::string& control_unit_uid);
                 };
-                
+
                 
             }
         }
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
index 5421394ec..cb117cc6c 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBNodeDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -69,12 +69,22 @@ int MongoDBNodeDataAccess::getNodeDescription(const std::string& node_unique_id,
     //inherited method
 int MongoDBNodeDataAccess::insertNewNode(CDataWrapper& node_description) {
     int err = 0;
+    uint64_t sequence_id = 0;
     try {
         if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) return -1;
         if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) return -2;
-        if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) return -3;
+        if(!node_description.hasKey("seq")) {
+            CHAOS_ASSERT(utility_data_access)
+            if(utility_data_access->getNextSequenceValue("nodes", sequence_id)) {
+                MDBNDA_ERR << "Error getting new sequence for node";
+                return err;
+            } else {
+                node_description.addInt64Value("seq", sequence_id);
+            }
+        }
+            //if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) return -3;
             //if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_DOMAIN)) return -4;
-        if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_TIMESTAMP)) return -5;
+            //if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_TIMESTAMP)) return -5;
 
         std::auto_ptr<SerializationBuffer> ser(node_description.getBSONData());
         mongo::BSONObj obj_to_insert(ser->getBufferPtr());
@@ -84,7 +94,7 @@ int MongoDBNodeDataAccess::insertNewNode(CDataWrapper& node_description) {
         DEBUG_CODE(MDBNDA_DBG << "insertNewNode insert ---------------------------------------------";)
         if((err = connection->insert(MONGO_DB_COLLECTION_NAME(getDatabaseName().c_str(), MONGODB_COLLECTION_NODES),
                                      obj_to_insert))) {
-            MDBNDA_ERR << "Error inserting new unit server";
+            MDBNDA_ERR << "Error creating new node";
         }
     } catch (const mongo::DBException &e) {
         MDBNDA_ERR << e.what();
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.h b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.h
index 09e5379af..35ca83f4d 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.h
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBNodeDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
@@ -19,8 +19,7 @@
  */
 #ifndef __CHAOSFramework__MongoDBNodeDataAccess__
 #define __CHAOSFramework__MongoDBNodeDataAccess__
-
-#include "MongoDBAccessor.h"
+#include "MongoDBUtilityDataAccess.h"
 #include "../data_access/NodeDataAccess.h"
 #include <chaos/common/utility/ObjectInstancer.h>
 #include <chaos_service_common/persistence/mongodb/MongoDBAccessor.h>
@@ -30,12 +29,14 @@ namespace chaos {
             namespace mongodb {
                 //forward declaration
                 class MongoDBPersistenceDriver;
-                
+
                 //! Data Access for producer manipulation data
                 class MongoDBNodeDataAccess:
                 public data_access::NodeDataAccess,
                 protected service_common::persistence::mongodb::MongoDBAccessor {
                     friend class MongoDBPersistenceDriver;
+
+                    MongoDBUtilityDataAccess *utility_data_access = NULL;
                 protected:
                     MongoDBNodeDataAccess(const boost::shared_ptr<chaos::service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection);
                     ~MongoDBNodeDataAccess();
@@ -43,17 +44,17 @@ namespace chaos {
                     //inherited method
                     int getNodeDescription(const std::string& node_unique_id,
                                            chaos::common::data::CDataWrapper **node_description);
-                    
+
                     //inherited method
                     int insertNewNode(chaos::common::data::CDataWrapper& node_description);
-                    
+
                     //! update the node updatable feature
                     int updateNode(chaos::common::data::CDataWrapper& node_description);
-                    
+
                     // inherited method
                     int checkNodePresence(const std::string& node_unique_id,
                                           bool& presence);
-                    
+
                     //! inherited method
                     int deleteNode(const std::string& node_unique_id);
 
@@ -65,7 +66,7 @@ namespace chaos {
                                    uint32_t page_length);
                 };
 
-                
+
             }
         }
     }
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.cpp
index 06428b54b..3231c1328 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBPersistenceDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
@@ -59,6 +59,7 @@ void MongoDBPersistenceDriver::init(void *init_data) throw (chaos::CException) {
     registerDataAccess<data_access::UtilityDataAccess>(new MongoDBUtilityDataAccess(connection));
     
     //connec usda with nda
+    getDataAccess<MongoDBNodeDataAccess>()->utility_data_access = getDataAccess<MongoDBUtilityDataAccess>();
     getDataAccess<MongoDBUnitServerDataAccess>()->node_data_access = getDataAccess<MongoDBNodeDataAccess>();
     getDataAccess<MongoDBControlUnitDataAccess>()->node_data_access = getDataAccess<MongoDBNodeDataAccess>();
 }
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.h b/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.h
index edf7e60a1..f75d8b22e 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.h
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBPersistenceDriver.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBPersistenceDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.cpp
index b8422d33e..a796999eb 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBUnitServerDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.h b/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.h
index de9b1e374..d2b129ec9 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.h
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBUnitServerDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBUnitServerDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
index dce612777..971f4805d 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBUtilityDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.h b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.h
index ec91b05c2..9bba59a89 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.h
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBUtilityDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/persistence.h b/ChaosMetadataService/persistence/persistence.h
index b29f5101f..78e1d0bca 100644
--- a/ChaosMetadataService/persistence/persistence.h
+++ b/ChaosMetadataService/persistence/persistence.h
@@ -1,6 +1,6 @@
 /*
  *	persistence.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataService/persistence/persistence_types.h b/ChaosMetadataService/persistence/persistence_types.h
index b8333ce7c..32e0a338a 100644
--- a/ChaosMetadataService/persistence/persistence_types.h
+++ b/ChaosMetadataService/persistence/persistence_types.h
@@ -1,6 +1,6 @@
 /*
  *	persistence_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/CMakeLists.txt b/ChaosMetadataServiceClient/CMakeLists.txt
index 8421b7856..9db0fde0c 100644
--- a/ChaosMetadataServiceClient/CMakeLists.txt
+++ b/ChaosMetadataServiceClient/CMakeLists.txt
@@ -24,6 +24,9 @@ INSTALL(FILES ${files} DESTINATION include/ChaosMetadataServiceClient)
 FILE(GLOB files "api_proxy/*.h")
 INSTALL(FILES ${files} DESTINATION include/ChaosMetadataServiceClient/api_proxy)
 
+FILE(GLOB files "api_proxy/control_unit/*.h")
+INSTALL(FILES ${files} DESTINATION include/ChaosMetadataServiceClient/api_proxy/control_unit)
+
 FILE(GLOB files "api_proxy/node/*.h")
 INSTALL(FILES ${files} DESTINATION include/ChaosMetadataServiceClient/api_proxy/node)
 
diff --git a/ChaosMetadataServiceClient/ChaosMetadataServiceClient.cpp b/ChaosMetadataServiceClient/ChaosMetadataServiceClient.cpp
index 9a2cca978..b6b181ca5 100644
--- a/ChaosMetadataServiceClient/ChaosMetadataServiceClient.cpp
+++ b/ChaosMetadataServiceClient/ChaosMetadataServiceClient.cpp
@@ -1,6 +1,6 @@
 /*
  *	ChaosMetadataServiceClient.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/ChaosMetadataServiceClient.h b/ChaosMetadataServiceClient/ChaosMetadataServiceClient.h
index 7d684506e..bd9ae2889 100644
--- a/ChaosMetadataServiceClient/ChaosMetadataServiceClient.h
+++ b/ChaosMetadataServiceClient/ChaosMetadataServiceClient.h
@@ -1,6 +1,6 @@
 /*
  *	MetadataServiceClient.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/api_proxy/ApiProxy.cpp b/ChaosMetadataServiceClient/api_proxy/ApiProxy.cpp
index be4aaf504..302227232 100644
--- a/ChaosMetadataServiceClient/api_proxy/ApiProxy.cpp
+++ b/ChaosMetadataServiceClient/api_proxy/ApiProxy.cpp
@@ -1,6 +1,6 @@
 /*
  *	ApiProxy.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -20,10 +20,12 @@
 #include <ChaosMetadataServiceClient/api_proxy/ApiProxy.h>
 using namespace chaos::metadata_service_client::api_proxy;
     //! default constructor
-ApiProxy::ApiProxy(const std::string& api_name,
+ApiProxy::ApiProxy(const std::string& _group_name,
+                   const std::string& _api_name,
                    chaos::common::message::MultiAddressMessageChannel *_mn_message,
                    int32_t _timeout_in_milliseconds):
-NamedService(api_name),
+group_name(_group_name),
+api_name(_api_name),
 access_counter(0),
 timeout_in_milliseconds(_timeout_in_milliseconds),
 mn_message(_mn_message){
@@ -36,11 +38,9 @@ ApiProxy::~ApiProxy() {
 
     //! execute an api call
 
-ApiProxyResult ApiProxy::callApi(const std::string& api_group,
-                                 const std::string& api_name,
-                                 chaos::common::data::CDataWrapper *api_message) {
+ApiProxyResult ApiProxy::callApi(chaos::common::data::CDataWrapper *api_message) {
     CHAOS_ASSERT(mn_message)
-    return  mn_message->sendRequestWithFuture(api_group,
+    return  mn_message->sendRequestWithFuture(group_name,
                                               api_name,
                                               api_message,
                                               timeout_in_milliseconds);
diff --git a/ChaosMetadataServiceClient/api_proxy/ApiProxy.h b/ChaosMetadataServiceClient/api_proxy/ApiProxy.h
index afbe0e7c7..9a1f182c1 100644
--- a/ChaosMetadataServiceClient/api_proxy/ApiProxy.h
+++ b/ChaosMetadataServiceClient/api_proxy/ApiProxy.h
@@ -1,6 +1,6 @@
 /*
  *	ApiProxy.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -21,7 +21,7 @@
 #ifndef __CHAOSFramework__ApiProxy__
 #define __CHAOSFramework__ApiProxy__
 
-#include <chaos/common/utility/NamedService.h>
+    //#include <chaos/common/utility/NamedService.h>
 #include <chaos/common/message/MultiAddressMessageChannel.h>
 
 #include <boost/atomic.hpp>
@@ -36,41 +36,45 @@ namespace chaos {
 explicit x(chaos::common::message::MultiAddressMessageChannel *_mn_message, int32_t timeout_in_milliseconds);\
 ~x();
 
-#define API_PROXY_CD_DEFINITION(x, alias)\
-x::x(chaos::common::message::MultiAddressMessageChannel *_mn_message, int32_t timeout_in_milliseconds):ApiProxy(alias, _mn_message, timeout_in_milliseconds){}\
+#define API_PROXY_CD_DEFINITION(x, group, name)\
+x::x(chaos::common::message::MultiAddressMessageChannel *_mn_message, int32_t timeout_in_milliseconds):ApiProxy(group, name, _mn_message, timeout_in_milliseconds){}\
 x::~x(){}
 
+#define API_PROXY_CD_DEFINITION_WITH_INIT(x, group, name, init)\
+x::x(chaos::common::message::MultiAddressMessageChannel *_mn_message, int32_t timeout_in_milliseconds):ApiProxy(group, name, _mn_message, timeout_in_milliseconds){init}\
+x::~x(){}
             //! define the result of an api like shared pointer of @chaos::common::message::MessageRequestFuture
             typedef auto_ptr<chaos::common::message::MultiAddressMessageRequestFuture> ApiProxyResult;
             
             class ApiProxyManager;
                 //! base class for all proxy api
-            class ApiProxy:
-            public chaos::common::utility::NamedService {
+            class ApiProxy {
                 friend class ApiProxyManager;
                     //!keep track on how many access are done to the proxy
                 boost::atomic<int> access_counter;
-
+                    //!is the timeout for the future
                 int32_t timeout_in_milliseconds;
-
                     //!channel for mds communication
                 chaos::common::message::MultiAddressMessageChannel *mn_message;
             protected:
+                    //! point to api group name
+                std::string     group_name;
+                    //! point to the api name
+                std::string     api_name;
+
                     //! default constructor
-                explicit ApiProxy(const std::string& api_name,
+                explicit ApiProxy(const std::string& _group_name,
+                                  const std::string& _api_name,
                                   chaos::common::message::MultiAddressMessageChannel *_mn_message,
                                   int32_t _timeout_in_milliseconds = 1000);
                     //! default destructor
                 ~ApiProxy();
-            protected:
                     //! execute an api call
                 /*!
                  preform an call of an api and return the opportune future
                  that permit to inspect the result or error
                  */
-                ApiProxyResult callApi(const std::string& api_group,
-                                       const std::string& api_name,
-                                       chaos::common::data::CDataWrapper *api_message);
+                ApiProxyResult callApi(chaos::common::data::CDataWrapper *api_message);
             };
         }
     }
diff --git a/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.cpp b/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.cpp
index c972a63be..7dad38253 100644
--- a/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.cpp
+++ b/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.cpp
@@ -1,6 +1,6 @@
 /*
  *	ApiProxyManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.h b/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.h
index bcde31f58..70a907c8f 100644
--- a/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.h
+++ b/ChaosMetadataServiceClient/api_proxy/ApiProxyManager.h
@@ -1,6 +1,6 @@
 /*
  *	ApiProxyManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/api_proxy/api.h b/ChaosMetadataServiceClient/api_proxy/api.h
index 02b9e5b23..15a0594e8 100644
--- a/ChaosMetadataServiceClient/api_proxy/api.h
+++ b/ChaosMetadataServiceClient/api_proxy/api.h
@@ -1,6 +1,6 @@
 /*
  *	api.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -25,6 +25,11 @@
 #include <ChaosMetadataServiceClient/api_proxy/ApiProxyManager.h>
 
 //---include all api header
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h>
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h>
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h>
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h>
+
 #include <ChaosMetadataServiceClient/api_proxy/node/GetNodeDescription.h>
 #include <ChaosMetadataServiceClient/api_proxy/node/NodeSearch.h>
 
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.cpp b/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.cpp
new file mode 100644
index 000000000..f56157258
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.cpp
@@ -0,0 +1,40 @@
+/*
+ *	GetInstance.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h>
+
+
+using namespace chaos::metadata_service_client::api_proxy;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
+
+API_PROXY_CD_DEFINITION(DeleteInstance,
+                        "control_unit",
+                        "deleteInstance")
+
+/*!
+
+ */
+ApiProxyResult DeleteInstance::execute(const std::string& unit_server_uid,
+                                    const std::string& control_unit_uid) {
+    chaos::common::data::CDataWrapper *message = new chaos::common::data::CDataWrapper();
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, control_unit_uid);
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_PARENT, unit_server_uid);
+    return callApi(message);
+}
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h b/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h
new file mode 100644
index 000000000..94daf2a17
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/DeleteInstance.h
@@ -0,0 +1,48 @@
+/*
+ *	DeleteInstance.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#ifndef __CHAOSFramework__DeleteInstance__
+#define __CHAOSFramework__DeleteInstance__
+
+#include <ChaosMetadataServiceClient/api_proxy/ApiProxy.h>
+
+namespace chaos {
+    namespace metadata_service_client {
+        namespace api_proxy {
+            namespace control_unit {
+
+                class DeleteInstance:
+                public chaos::metadata_service_client::api_proxy::ApiProxy {
+                    API_PROXY_CLASS(DeleteInstance)
+                protected:
+                        //! default constructor
+                    API_PROXY_CD_DECLARATION(DeleteInstance)
+
+                public:
+
+                    ApiProxyResult execute(const std::string& unit_server_uid,
+                                           const std::string& control_unit_uid);
+                };
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__DeleteInstance__) */
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.cpp b/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.cpp
new file mode 100644
index 000000000..d6d67607f
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.cpp
@@ -0,0 +1,39 @@
+/*
+ *	GetInstance.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h>
+
+using namespace chaos::metadata_service_client::api_proxy;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
+
+API_PROXY_CD_DEFINITION(GetInstance,
+                        "control_unit",
+                        "getInstance")
+
+/*!
+
+ */
+ApiProxyResult GetInstance::execute(const std::string& unit_server_uid,
+                                    const std::string& control_unit_uid) {
+    chaos::common::data::CDataWrapper *message = new chaos::common::data::CDataWrapper();
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, control_unit_uid);
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_PARENT, unit_server_uid);
+    return callApi(message);
+}
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h b/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h
new file mode 100644
index 000000000..54e0a00d5
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/GetInstance.h
@@ -0,0 +1,47 @@
+/*
+ *	GetInstance.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#ifndef __CHAOSFramework__GetInstance__
+#define __CHAOSFramework__GetInstance__
+
+#include <ChaosMetadataServiceClient/api_proxy/ApiProxy.h>
+
+namespace chaos {
+    namespace metadata_service_client {
+        namespace api_proxy {
+            namespace control_unit {
+                class GetInstance:
+                public chaos::metadata_service_client::api_proxy::ApiProxy {
+                    API_PROXY_CLASS(GetInstance)
+                protected:
+                        //! default constructor
+                    API_PROXY_CD_DECLARATION(GetInstance)
+
+                public:
+
+                    ApiProxyResult execute(const std::string& unit_server_uid,
+                                           const std::string& control_unit_uid);
+                };
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__GetInstance__) */
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.cpp b/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.cpp
new file mode 100644
index 000000000..8ef89cc3f
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.cpp
@@ -0,0 +1,47 @@
+/*
+ *	SearchInstancesByUS.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h>
+
+using namespace chaos::metadata_service_client::api_proxy;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
+
+API_PROXY_CD_DEFINITION(SearchInstancesByUS,
+                        "control_unit",
+                        "searchInstancesByUS")
+
+/*!
+
+ */
+ApiProxyResult SearchInstancesByUS::execute(uint32_t last_node_sequence_id,
+                                            uint32_t result_page_length) {
+    chaos::common::data::CDataWrapper *message = new chaos::common::data::CDataWrapper();
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_PARENT, unit_server_uid);
+    if(control_unit_implementation.size()) {
+        for(std::vector<std::string>::iterator it = control_unit_implementation.begin();
+            it != control_unit_implementation.end();
+            it++) {
+            message->appendStringToArray(*it);
+        }
+        message->finalizeArrayForKey("control_unit_implementation");
+    }
+    message->addInt32Value("last_node_sequence_id", last_node_sequence_id);
+    message->addInt32Value("result_page_length", result_page_length);
+    return callApi(message);
+}
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h b/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h
new file mode 100644
index 000000000..673c6ae7b
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/SearchInstancesByUS.h
@@ -0,0 +1,51 @@
+/*
+ *	SearchInstancesByUS.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#ifndef __CHAOSFramework__SearchInstancesByUS__
+#define __CHAOSFramework__SearchInstancesByUS__
+
+#include <ChaosMetadataServiceClient/api_proxy/ApiProxy.h>
+
+namespace chaos {
+    namespace metadata_service_client {
+        namespace api_proxy {
+            namespace control_unit {
+                class SearchInstancesByUS:
+                public chaos::metadata_service_client::api_proxy::ApiProxy {
+                    API_PROXY_CLASS(SearchInstancesByUS)
+                protected:
+                        //! default constructor
+                    API_PROXY_CD_DECLARATION(SearchInstancesByUS)
+
+                public:
+                        //the unit server that host the instances
+                    std::string unit_server_uid;
+                        //the implementation that whe want to be returned
+                    std::vector<std::string> control_unit_implementation;
+
+                    ApiProxyResult execute(uint32_t last_node_sequence_id = 0,
+                                           uint32_t result_page_length = 100);
+                };
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__SearchInstancesByUS__) */
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.cpp b/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.cpp
new file mode 100644
index 000000000..725c3baec
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.cpp
@@ -0,0 +1,118 @@
+/*
+ *	ControlUnitSetInstanceDescription.cpp
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+
+#include <ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h>
+
+using namespace chaos::common::data;
+using namespace chaos::metadata_service_client::api_proxy;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
+
+API_PROXY_CD_DEFINITION_WITH_INIT(SetInstanceDescription,
+                                  "control_unit",
+                                  "setInstanceDescription",
+                                  control_unit_uid = "";
+                                  unit_server_uid = "";
+                                  control_unit_implementation = "";
+                                  auto_load = false;
+                                  load_parameter = "";
+                                  )
+
+    //!add a new driver description
+void SetInstanceDescription::addDriverDesscription(const std::string& driver_name,
+                                                   const std::string& driver_version,
+                                                   const std::string& driver_init_parameter) {
+    auto_ptr<CDataWrapper> dd(new CDataWrapper());
+    dd->addStringValue("name", driver_name);
+    dd->addStringValue("version", driver_version);
+    dd->addStringValue("init_parameter", driver_init_parameter);
+    driver_descirptions.push_back(dd.release());
+}
+
+    //! clear all previously added driver descriptions
+void SetInstanceDescription::clearAllDriverDescriptions() {
+    driver_descirptions.clear();
+}
+
+    //! add an attribute range value description for the default value and range
+void SetInstanceDescription::addAttributeConfig(const std::string& attribute_name,
+                                                const std::string& attribute_default_value,
+                                                const std::string& attribute_max_range,
+                                                const std::string& attribute_min_range) {
+    auto_ptr<CDataWrapper> attr(new CDataWrapper());
+    attr->addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME, attribute_name);
+    attr->addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE, attribute_default_value);
+    if(attribute_max_range.size()>0)attr->addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE, attribute_max_range);
+    if(attribute_min_range.size()>0)attr->addStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE, attribute_min_range);
+    attribute_value_descriptions.push_back(attr.release());
+
+}
+    //! remove all previously added attribute range value description
+void SetInstanceDescription::clearAllAttributeConfig() {
+    attribute_value_descriptions.clear();
+}
+
+
+/*!
+
+ */
+ApiProxyResult SetInstanceDescription::execute() {
+    chaos::common::data::CDataWrapper instance_description;
+    chaos::common::data::CDataWrapper *message = new chaos::common::data::CDataWrapper();
+        //add the control unit unique id
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, control_unit_uid);
+        // set the type for control unit
+    message->addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+
+
+
+        // add the unit server as parent
+    instance_description.addStringValue(chaos::NodeDefinitionKey::NODE_PARENT, unit_server_uid);
+
+        //add the control unit implementation
+    instance_description.addStringValue("control_unit_implementation", control_unit_implementation);
+
+        //add the control unit implementation
+    instance_description.addBoolValue("auto_load", auto_load);
+        // set the load parameter
+    instance_description.addStringValue("load_parameter", load_parameter);
+
+        //add driver description
+    if(driver_descirptions.size()>0) {
+    for(CDWListIterator it = driver_descirptions.begin();
+        it != driver_descirptions.end();
+        it++) {
+        instance_description.appendCDataWrapperToArray(*it);
+    }
+    instance_description.finalizeArrayForKey("driver_description");
+    }
+        //add attribute description
+    if(attribute_value_descriptions.size()>0) {
+        for(CDWListIterator it = attribute_value_descriptions.begin();
+            it != attribute_value_descriptions.end();
+            it++) {
+            instance_description.appendCDataWrapperToArray(*it);
+        }
+        instance_description.finalizeArrayForKey("attribute_value_descriptions");
+    }
+
+        //add instance description to the message
+    message->addCSDataValue("instance_description", instance_description);
+    return callApi(message);
+}
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h b/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h
new file mode 100644
index 000000000..9106a6b7a
--- /dev/null
+++ b/ChaosMetadataServiceClient/api_proxy/control_unit/SetInstanceDescription.h
@@ -0,0 +1,86 @@
+/*
+ *	SetInstanceDescription.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef __CHAOSFramework__SetInstanceDescription__
+#define __CHAOSFramework__SetInstanceDescription__
+
+#include <ChaosMetadataServiceClient/api_proxy/ApiProxy.h>
+
+#include <boost/ptr_container/ptr_vector.hpp>
+
+namespace chaos {
+    namespace metadata_service_client {
+        namespace api_proxy {
+            namespace control_unit {
+
+                typedef boost::ptr_vector<common::data::CDataWrapper>           CDWList;
+                typedef boost::ptr_vector<common::data::CDataWrapper>::iterator CDWListIterator;
+
+                class SetInstanceDescription:
+                public chaos::metadata_service_client::api_proxy::ApiProxy {
+                    API_PROXY_CLASS(SetInstanceDescription)
+                        //!list for all ddriver description added to the api
+                    CDWList driver_descirptions;
+                        //!list all the attribute value description added to the api
+                    CDWList attribute_value_descriptions;
+                protected:
+                    API_PROXY_CD_DECLARATION(SetInstanceDescription)
+                public:
+                        //! the unique id of the control unit instance
+                    std::string control_unit_uid;
+                        //! the unit server that host the instance
+                    std::string unit_server_uid;
+                        //!the control unit implementaiton of the instance
+                    std::string control_unit_implementation;
+                        //!set the instance autoload flag
+                    /*!
+                     specify if the control unit, hosted by an unit server, need to be loaded after his parent has been successfully registered.
+                     */
+                    bool auto_load;
+
+                        //! the string is passed to the control unit for the load phase
+                    std::string load_parameter;
+
+                        //!add a new driver description
+                    void addDriverDesscription(const std::string& driver_name,
+                                               const std::string& driver_version,
+                                               const std::string& driver_init_parameter);
+
+                        //! clear all previously added driver descriptions
+                    void clearAllDriverDescriptions();
+
+                        //! add an attribute range value description for the default value and range
+                    void addAttributeConfig(const std::string& attribute_name,
+                                            const std::string& attribute_default_value,
+                                            const std::string& attribute_max_range = std::string(),
+                                            const std::string& attribute_min_range = std::string());
+                        //! remove all previously added attribute range value description
+                    void clearAllAttributeConfig();
+                    /*!
+                     Set the isntance
+                     */
+                    ApiProxyResult execute();
+                };
+                
+            }
+        }
+    }
+}
+
+#endif /* defined(__CHAOSFramework__SetInstanceDescription__) */
diff --git a/ChaosMetadataServiceClient/api_proxy/node/GetNodeDescription.cpp b/ChaosMetadataServiceClient/api_proxy/node/GetNodeDescription.cpp
index 1bd23737b..fa4a6296f 100644
--- a/ChaosMetadataServiceClient/api_proxy/node/GetNodeDescription.cpp
+++ b/ChaosMetadataServiceClient/api_proxy/node/GetNodeDescription.cpp
@@ -1,6 +1,6 @@
 /*
  *	GetNodeDescription.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -22,7 +22,9 @@
 using namespace chaos::metadata_service_client::api_proxy;
 using namespace chaos::metadata_service_client::api_proxy::node;
 
-API_PROXY_CD_DEFINITION(GetNodeDescription, "getNodeDescription")
+API_PROXY_CD_DEFINITION(GetNodeDescription,
+                        "system",
+                        "getNodeDescription")
 
 /*!
 
@@ -30,5 +32,5 @@ API_PROXY_CD_DEFINITION(GetNodeDescription, "getNodeDescription")
 ApiProxyResult GetNodeDescription::execute(const std::string& unique_node_id) {
     chaos::common::data::CDataWrapper *message = new chaos::common::data::CDataWrapper();
     message->addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, unique_node_id);
-    return callApi("system", getName(), message);
+    return callApi(message);
 }
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.cpp b/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.cpp
index 1f4f2ad92..81abd38b6 100644
--- a/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.cpp
+++ b/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeSearch.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -22,7 +22,7 @@
 using namespace chaos::metadata_service_client::api_proxy;
 using namespace chaos::metadata_service_client::api_proxy::node;
 
-API_PROXY_CD_DEFINITION(NodeSearch, "nodeSearch")
+API_PROXY_CD_DEFINITION(NodeSearch, "system", "nodeSearch")
 
 /*!
 
@@ -36,5 +36,5 @@ ApiProxyResult NodeSearch::execute(const std::string& unique_id_filter,
     message->addInt32Value("node_type_filter", node_type_filter);
     message->addInt32Value("last_node_sequence_id", last_node_sequence_id);
     message->addInt32Value("result_page_length", page_length);
-    return callApi("system", getName(), message);
+    return callApi(message);
 }
\ No newline at end of file
diff --git a/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.h b/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.h
index f3cd839d6..596fe60b8 100644
--- a/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.h
+++ b/ChaosMetadataServiceClient/api_proxy/node/NodeSearch.h
@@ -1,6 +1,6 @@
 /*
  *	NodeSearch.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/metadata_service_client_constants.h b/ChaosMetadataServiceClient/metadata_service_client_constants.h
index 6dbcccdc9..8b65f11be 100644
--- a/ChaosMetadataServiceClient/metadata_service_client_constants.h
+++ b/ChaosMetadataServiceClient/metadata_service_client_constants.h
@@ -1,6 +1,6 @@
 /*
  *	metadata_service_client_constants.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClient/metadata_service_client_types.h b/ChaosMetadataServiceClient/metadata_service_client_types.h
index a35ff7f6c..84c607f14 100644
--- a/ChaosMetadataServiceClient/metadata_service_client_types.h
+++ b/ChaosMetadataServiceClient/metadata_service_client_types.h
@@ -1,6 +1,6 @@
 /*
  *	metadata_service_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosMetadataServiceClientTest/main.cpp b/ChaosMetadataServiceClientTest/main.cpp
index bff014f9a..e62e3eb6d 100644
--- a/ChaosMetadataServiceClientTest/main.cpp
+++ b/ChaosMetadataServiceClientTest/main.cpp
@@ -11,12 +11,19 @@
 #include <chaos/common/message/MultiAddressMessageChannel.h>
 #include <ChaosMetadataServiceClient/ChaosMetadataServiceClient.h>
 
+#include <boost/atomic.hpp>
+#include <boost/thread.hpp>
 #include <boost/lexical_cast.hpp>
+
 using namespace chaos::metadata_service_client::api_proxy;
 using namespace chaos::metadata_service_client::api_proxy::node;
 
 using namespace chaos::metadata_service_client;
 
+boost::atomic<uint64_t> global_counter;
+boost::atomic<uint64_t> error_count;
+boost::atomic<uint64_t> no_result_count;
+;
 class EchoTestProxy:
 public chaos::metadata_service_client::api_proxy::ApiProxy {
     API_PROXY_CLASS(EchoTestProxy)
@@ -40,41 +47,56 @@ public:
     };
 };
 
+void asyncTest(EchoTestProxy *echo_proxy_test) {
 
+    uint64_t num_of_cicle = 0;
+    for(int idx = 0; idx < 10000; idx++) {
+        if(((num_of_cicle++) % 100) == 0) {
+            std::cout << "." << std::flush;
+        }
+        std::string value = "value_echo_" + boost::lexical_cast<std::string>(global_counter++);
+        ApiProxyResult r = echo_proxy_test->execute("key_echo", value);
+        int i = 0;
+        while (!r->wait()) {
+            std::cout << "Waint for result pass:" << i++<< "\n" << std::flush;
+            if(i>2) break;
+        }
+        
+        if(r->getResult() != NULL) {
+            //std::cout << r->getResult()->getJSONString() << "\n" << std::flush;
+            assert(value.compare(r->getResult()->getStringValue("key_echo")) == 0);
+        } else if(r->getError()){
+            error_count++;
+            //std::cerr << "Error code:"<<r->getError() << "\n" << std::flush;
+            //std::cerr << "Error Message:"<<r->getErrorMessage() <<  "\n" << std::flush;
+            //std::cerr << "Error Domain:"<<r->getErrorDomain() <<  "\n" << std::flush;
+        } else {
+            no_result_count++;
+            //std::cerr << "No result found";
+        }
+        //sleep for 100ms
+        //usleep(1000);
+    }
+}
 
 int main(int argc, char * argv[]) {
-    
+    boost::thread_group tg;
     try{
+        global_counter = 0;
+        error_count = 0;
+        no_result_count=0;
         ChaosMetadataServiceClient::getInstance()->init(argc, argv);
         ChaosMetadataServiceClient::getInstance()->start();
 
         EchoTestProxy *echo_proxy_test = ChaosMetadataServiceClient::getInstance()->getApiProxy<EchoTestProxy>(1000);
-
-        for(int idx = 0; idx < 10000; idx++) {
-            std::string value = "value_echo_" + boost::lexical_cast<std::string>(idx);
-            ApiProxyResult r = echo_proxy_test->execute("key_echo", value);
-            int i = 0;
-            while (!r->wait()) {
-                std::cout << "Waint for result pass:" << i++<< "\n" << std::flush;
-                if(i>2) break;
-            }
-
-            if(r->getResult() != NULL) {
-                std::cout << r->getResult()->getJSONString() << "\n" << std::flush;
-                assert(value.compare(r->getResult()->getStringValue("key_echo")) == 0);
-            } else if(r->getError()){
-                std::cerr << "Error code:"<<r->getError() << "\n" << std::flush;
-                std::cerr << "Error Message:"<<r->getErrorMessage() <<  "\n" << std::flush;
-                std::cerr << "Error Domain:"<<r->getErrorDomain() <<  "\n" << std::flush;
-            } else {
-                std::cerr << "No result found";
-            }
-                //sleep for 100ms
-            usleep(100000);
-        }
-
-        std::cout << "Test finisched...waith 5 seconds befor quit\n" << std::flush;
-        sleep(5);
+        tg.add_thread(new boost::thread(&asyncTest, echo_proxy_test));
+        tg.add_thread(new boost::thread(&asyncTest, echo_proxy_test));
+        tg.join_all();
+        std::cout << "\nTest finisched with 2 thread\n" << std::flush;
+        std::cout << "global_counter"<<global_counter<<"\n" << std::flush;
+        std::cout << "error_count"<<error_count<<"\n" << std::flush;
+        std::cout << "no_result_count"<<no_result_count<<"\n" << std::flush;
+        //sleep(5);
         ChaosMetadataServiceClient::getInstance()->stop();
         ChaosMetadataServiceClient::getInstance()->deinit();
     }catch(chaos::CException& ex) {
diff --git a/ChaosSnapshotUtility/main.cpp b/ChaosSnapshotUtility/main.cpp
index c2b6b81ab..691e36649 100644
--- a/ChaosSnapshotUtility/main.cpp
+++ b/ChaosSnapshotUtility/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	main.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/ChaosWANProxy.cpp b/ChaosWANProxy/ChaosWANProxy.cpp
index 0d1bccc52..ec102eeb2 100644
--- a/ChaosWANProxy/ChaosWANProxy.cpp
+++ b/ChaosWANProxy/ChaosWANProxy.cpp
@@ -1,6 +1,6 @@
 /*
  *	ChaosWANProxy.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/ChaosWANProxy.h b/ChaosWANProxy/ChaosWANProxy.h
index 50188eb3b..c6ff52573 100644
--- a/ChaosWANProxy/ChaosWANProxy.h
+++ b/ChaosWANProxy/ChaosWANProxy.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosWANProxy.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/DefaultWANInterfaceHandler.cpp b/ChaosWANProxy/DefaultWANInterfaceHandler.cpp
index 1bc922d45..862d89d6d 100644
--- a/ChaosWANProxy/DefaultWANInterfaceHandler.cpp
+++ b/ChaosWANProxy/DefaultWANInterfaceHandler.cpp
@@ -1,6 +1,6 @@
 /*
  *	DefaultWANInterfaceHandler.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/DefaultWANInterfaceHandler.h b/ChaosWANProxy/DefaultWANInterfaceHandler.h
index 4d36ea149..926ffa6d4 100644
--- a/ChaosWANProxy/DefaultWANInterfaceHandler.h
+++ b/ChaosWANProxy/DefaultWANInterfaceHandler.h
@@ -1,6 +1,6 @@
 /*
  *	DefaultWANInterfaceHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/AbstractApi.cpp b/ChaosWANProxy/api/AbstractApi.cpp
index cd5dbee1b..479bab70b 100644
--- a/ChaosWANProxy/api/AbstractApi.cpp
+++ b/ChaosWANProxy/api/AbstractApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/AbstractApi.h b/ChaosWANProxy/api/AbstractApi.h
index 061107a5b..034d2d943 100644
--- a/ChaosWANProxy/api/AbstractApi.h
+++ b/ChaosWANProxy/api/AbstractApi.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/AbstractApiGroup.cpp b/ChaosWANProxy/api/AbstractApiGroup.cpp
index e9de25b87..95d88746f 100644
--- a/ChaosWANProxy/api/AbstractApiGroup.cpp
+++ b/ChaosWANProxy/api/AbstractApiGroup.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractApiGroup.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/AbstractApiGroup.h b/ChaosWANProxy/api/AbstractApiGroup.h
index 814366358..1257ea614 100644
--- a/ChaosWANProxy/api/AbstractApiGroup.h
+++ b/ChaosWANProxy/api/AbstractApiGroup.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractApiGroup.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/PersistenceAccessor.cpp b/ChaosWANProxy/api/PersistenceAccessor.cpp
index 9aee6a215..ffb80f76e 100644
--- a/ChaosWANProxy/api/PersistenceAccessor.cpp
+++ b/ChaosWANProxy/api/PersistenceAccessor.cpp
@@ -1,6 +1,6 @@
 /*
  *	PersistenceAccessor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/PersistenceAccessor.h b/ChaosWANProxy/api/PersistenceAccessor.h
index 3594d4039..7185db607 100644
--- a/ChaosWANProxy/api/PersistenceAccessor.h
+++ b/ChaosWANProxy/api/PersistenceAccessor.h
@@ -1,6 +1,6 @@
 /*
  *	PersistenceAccessor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/api.h b/ChaosWANProxy/api/api.h
index be3380317..1793fbbf5 100644
--- a/ChaosWANProxy/api/api.h
+++ b/ChaosWANProxy/api/api.h
@@ -1,6 +1,6 @@
 /*
  *	api.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/api_types.h b/ChaosWANProxy/api/api_types.h
index 8ed4b501f..3180dd88a 100644
--- a/ChaosWANProxy/api/api_types.h
+++ b/ChaosWANProxy/api/api_types.h
@@ -1,6 +1,6 @@
 /*
  *	api_types.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.cpp b/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.cpp
index 5ce5cf8ab..819fde963 100644
--- a/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.cpp
+++ b/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerGetLastDatasetApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.h b/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.h
index d9669f890..d82238ca8 100644
--- a/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.h
+++ b/ChaosWANProxy/api/producer/ProducerGetLastDatasetApi.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerGetLastDatasetApi
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerGroup.cpp b/ChaosWANProxy/api/producer/ProducerGroup.cpp
index d1324fe35..f016a6634 100644
--- a/ChaosWANProxy/api/producer/ProducerGroup.cpp
+++ b/ChaosWANProxy/api/producer/ProducerGroup.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerGroup.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerGroup.h b/ChaosWANProxy/api/producer/ProducerGroup.h
index b94118e04..4762eabd7 100644
--- a/ChaosWANProxy/api/producer/ProducerGroup.h
+++ b/ChaosWANProxy/api/producer/ProducerGroup.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerGroup.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.cpp b/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.cpp
index 98a76f963..f8be666e5 100644
--- a/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.cpp
+++ b/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerInsertDatasetApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.h b/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.h
index fe2e8bbf7..9a94fd880 100644
--- a/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.h
+++ b/ChaosWANProxy/api/producer/ProducerInsertDatasetApi.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerInsertDatasetApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.cpp b/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.cpp
index a87b5ec3f..15a0ef9c7 100644
--- a/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.cpp
+++ b/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.cpp
@@ -1,6 +1,6 @@
 /*
  *	ProducerRegisterAPI.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.h b/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.h
index 31dc642eb..6c10aaade 100644
--- a/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.h
+++ b/ChaosWANProxy/api/producer/ProducerRegisterDatasetApi.h
@@ -1,6 +1,6 @@
 /*
  *	ProducerRegisterDatasetApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/global_constant.h b/ChaosWANProxy/global_constant.h
index e62666614..d451b27fd 100644
--- a/ChaosWANProxy/global_constant.h
+++ b/ChaosWANProxy/global_constant.h
@@ -1,6 +1,6 @@
 /*
  *	global_constant.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/global_type.h b/ChaosWANProxy/global_type.h
index b1335f185..8a5f84d63 100644
--- a/ChaosWANProxy/global_type.h
+++ b/ChaosWANProxy/global_type.h
@@ -1,6 +1,6 @@
 /*
  *	global_type.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/main.cpp b/ChaosWANProxy/main.cpp
index 32c12ad5d..da48fde56 100644
--- a/ChaosWANProxy/main.cpp
+++ b/ChaosWANProxy/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	main.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/persistence/AbstractPersistenceDriver.h b/ChaosWANProxy/persistence/AbstractPersistenceDriver.h
index febc553d9..dd1fa0b12 100644
--- a/ChaosWANProxy/persistence/AbstractPersistenceDriver.h
+++ b/ChaosWANProxy/persistence/AbstractPersistenceDriver.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractPersistenceDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/persistence/DefaultPersistenceDriver.cpp b/ChaosWANProxy/persistence/DefaultPersistenceDriver.cpp
index 1a85673d0..a6ebfbf1c 100644
--- a/ChaosWANProxy/persistence/DefaultPersistenceDriver.cpp
+++ b/ChaosWANProxy/persistence/DefaultPersistenceDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	DefaultPersistenceDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/persistence/DefaultPersistenceDriver.h b/ChaosWANProxy/persistence/DefaultPersistenceDriver.h
index 495580925..b420904e9 100644
--- a/ChaosWANProxy/persistence/DefaultPersistenceDriver.h
+++ b/ChaosWANProxy/persistence/DefaultPersistenceDriver.h
@@ -1,6 +1,6 @@
 /*
  *	DefaultPersistenceDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/utility/TypedConstrainedHashMap.h b/ChaosWANProxy/utility/TypedConstrainedHashMap.h
index 303b75d2a..04d4a5b5a 100644
--- a/ChaosWANProxy/utility/TypedConstrainedHashMap.h
+++ b/ChaosWANProxy/utility/TypedConstrainedHashMap.h
@@ -1,6 +1,6 @@
 /*
  *	TypedConstrainedHashMap.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/AbstractWANInterface.cpp b/ChaosWANProxy/wan_interface/AbstractWANInterface.cpp
index 3ee77ae59..70bb507b7 100644
--- a/ChaosWANProxy/wan_interface/AbstractWANInterface.cpp
+++ b/ChaosWANProxy/wan_interface/AbstractWANInterface.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractWANInterface.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/AbstractWANInterface.h b/ChaosWANProxy/wan_interface/AbstractWANInterface.h
index 3c0513985..acd1073d2 100644
--- a/ChaosWANProxy/wan_interface/AbstractWANInterface.h
+++ b/ChaosWANProxy/wan_interface/AbstractWANInterface.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractWANInterface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.cpp b/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.cpp
index 4e142707a..b87702a7b 100644
--- a/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.cpp
+++ b/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractWANInterfaceResponse.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh <year> INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.h b/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.h
index e48527b23..c55a9fc92 100644
--- a/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.h
+++ b/ChaosWANProxy/wan_interface/AbstractWANInterfaceResponse.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractWANInterfaceResponse
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh <year> INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.cpp b/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.cpp
index 21d5a2ee0..37f935849 100644
--- a/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.cpp
+++ b/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.cpp
@@ -1,6 +1,6 @@
 /*
  *	BaseWANInterfacelHandler.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.h b/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.h
index 227a1ad3d..2bdccbe5a 100644
--- a/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.h
+++ b/ChaosWANProxy/wan_interface/BaseWANInterfaceHandler.h
@@ -1,6 +1,6 @@
 /*
  *	BaseWANInterfacelHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterface.cpp b/ChaosWANProxy/wan_interface/http/HTTPWANInterface.cpp
index 9a7f94b2d..a22c44fbc 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterface.cpp
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterface.cpp
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterface.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterface.h b/ChaosWANProxy/wan_interface/http/HTTPWANInterface.h
index 98abe06c8..2f87791be 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterface.h
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterface.h
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.cpp b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.cpp
index c3d556840..b0d619296 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.cpp
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.cpp
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterfaceRequest.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.h b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.h
index d0088993d..efef45104 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.h
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceRequest.h
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterfaceRequest.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.cpp b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.cpp
index 493566d3e..2a15d3524 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.cpp
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.cpp
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterfaceStringResponse.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh <year> INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.h b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.h
index 88db4bcb9..c5641839b 100644
--- a/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.h
+++ b/ChaosWANProxy/wan_interface/http/HTTPWANInterfaceStringResponse.h
@@ -1,6 +1,6 @@
 /*
  *	HTTPWANInterfaceStringResponse.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh <year> INFN, National Institute of Nuclear Physics
diff --git a/ChaosWANProxy/wan_interface/wan_interface.h b/ChaosWANProxy/wan_interface/wan_interface.h
index 4ea918c00..73c2d2e13 100644
--- a/ChaosWANProxy/wan_interface/wan_interface.h
+++ b/ChaosWANProxy/wan_interface/wan_interface.h
@@ -1,6 +1,6 @@
 /*
  *	wan_interface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh <year> INFN, National Institute of Nuclear Physics
diff --git a/TestCDSQuery/QueryTest.cpp b/TestCDSQuery/QueryTest.cpp
index b68168423..32dfc25cb 100644
--- a/TestCDSQuery/QueryTest.cpp
+++ b/TestCDSQuery/QueryTest.cpp
@@ -1,6 +1,6 @@
 /*
  *	QueryTest.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/TestCDSQuery/QueryTest.h b/TestCDSQuery/QueryTest.h
index a9af74d1c..dffa841a9 100644
--- a/TestCDSQuery/QueryTest.h
+++ b/TestCDSQuery/QueryTest.h
@@ -1,6 +1,6 @@
 /*
  *	QueryTest.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/TestCDSQuery/main.cpp b/TestCDSQuery/main.cpp
index 43c755b05..7f9ff067b 100644
--- a/TestCDSQuery/main.cpp
+++ b/TestCDSQuery/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	main.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/ccs/MainController.cpp b/ccs/MainController.cpp
index df52bbbd0..28588a386 100644
--- a/ccs/MainController.cpp
+++ b/ccs/MainController.cpp
@@ -58,22 +58,24 @@ void MainController::init(int argc, char **argv, QApplication& a) {
     QApplication::setOrganizationName("INFN-LNF");
 
     a.setStyle(QStyleFactory::create("Fusion"));
+    QColor dark_main(80,80,80);
 
     QPalette darkPalette;
-    darkPalette.setColor(QPalette::Window, QColor(53,53,53));
-    darkPalette.setColor(QPalette::WindowText, Qt::white);
+    darkPalette.setColor(QPalette::Window, dark_main);
+    darkPalette.setColor(QPalette::WindowText, QColor(220,220,220));
     darkPalette.setColor(QPalette::Base, QColor(25,25,25));
-    darkPalette.setColor(QPalette::AlternateBase, QColor(53,53,53));
+    darkPalette.setColor(QPalette::AlternateBase, dark_main);
     darkPalette.setColor(QPalette::ToolTipBase, Qt::white);
     darkPalette.setColor(QPalette::ToolTipText, Qt::white);
-    darkPalette.setColor(QPalette::Text, Qt::white);
-    darkPalette.setColor(QPalette::Button, QColor(53,53,53));
+    darkPalette.setColor(QPalette::Text, QColor(220,220,220));
+    darkPalette.setColor(QPalette::Button, dark_main);
     darkPalette.setColor(QPalette::ButtonText, Qt::white);
     darkPalette.setColor(QPalette::BrightText, Qt::red);
     darkPalette.setColor(QPalette::Link, QColor(42, 130, 218));
 
     darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218));
     darkPalette.setColor(QPalette::HighlightedText, Qt::black);
+    darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(155,155,155));
 
     a.setPalette(darkPalette);
     a.setStyleSheet("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }");
diff --git a/ccs/ccs.pro b/ccs/ccs.pro
index db8d17303..535e7145e 100644
--- a/ccs/ccs.pro
+++ b/ccs/ccs.pro
@@ -41,7 +41,9 @@ SOURCES += main.cpp\
     api_async_processor/ApiAsyncRunnable.cpp \
     MainController.cpp \
     node/unit_server/UnitServerEditor.cpp \
-    node/control_unit/ControUnitInstanceEditor.cpp
+    node/control_unit/ControUnitInstanceEditor.cpp \
+    node/control_unit/DriverDescriptionInputDialog.cpp \
+    node/control_unit/AttributeValueRangeDialog.cpp
 
 HEADERS  += mainwindow.h \
     search/SearchNodeResult.h \
@@ -53,15 +55,17 @@ HEADERS  += mainwindow.h \
     api_async_processor/ApiAsyncRunnable.h \
     MainController.h \
     node/unit_server/UnitServerEditor.h \
-    node/control_unit/ControUnitInstanceEditor.h
+    node/control_unit/ControUnitInstanceEditor.h \
+    node/control_unit/DriverDescriptionInputDialog.h \
+    node/control_unit/AttributeValueRangeDialog.h
 
 FORMS    += mainwindow.ui \
     search/searchnoderesult.ui \
     search/searchnode.ui \
     node/unit_server/UnitServerEditor.ui \
-    node/control_unit/ControUnitInstanceEditor.ui
+    node/control_unit/ControUnitInstanceEditor.ui \
+    node/control_unit/DriverDescriptionInputDialog.ui \
+    node/control_unit/AttributeValueRangeDialog.ui
 
 DISTFILES += \
-    dark_orange.stylesheet \
-    node/unit_server/Test.qml \
-    node/unit_server/TestForm.ui.qml
+    dark_orange.stylesheet
diff --git a/ccs/mainwindow.cpp b/ccs/mainwindow.cpp
index 69168f7b0..0857f58b1 100644
--- a/ccs/mainwindow.cpp
+++ b/ccs/mainwindow.cpp
@@ -2,6 +2,7 @@
 #include "ui_mainwindow.h"
 #include "search/SearchNode.h"
 #include "node/unit_server/UnitServerEditor.h"
+#include "search/SearchNodeResult.h"
 
 #include <QInputDialog>
 MainWindow::MainWindow(QWidget *parent) :
@@ -30,7 +31,7 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
-void MainWindow::on_actionOpen_Node_triggered()
+void MainWindow::on_actionOpenNode_triggered()
 {
     //opena a specified node, knowing the unique identifier
     bool ok;
@@ -53,6 +54,9 @@ void MainWindow::on_actionOpen_Node_triggered()
             command_presenter->showCommandPresenter(new UnitServerEditor(node_uid));
         }
     }
+}
 
-
+void MainWindow::on_actionSearch_Node_triggered()
+{
+    command_presenter->showCommandPresenter(new SearchNodeResult());
 }
diff --git a/ccs/mainwindow.h b/ccs/mainwindow.h
index a6acc796b..7e9841056 100644
--- a/ccs/mainwindow.h
+++ b/ccs/mainwindow.h
@@ -17,7 +17,9 @@ public:
     ~MainWindow();
 
 private slots:
-    void on_actionOpen_Node_triggered();
+    void on_actionOpenNode_triggered();
+
+    void on_actionSearch_Node_triggered();
 
 private:
     Ui::MainWindow *ui;
diff --git a/ccs/mainwindow.ui b/ccs/mainwindow.ui
index 658f3b526..3b9ad20d7 100644
--- a/ccs/mainwindow.ui
+++ b/ccs/mainwindow.ui
@@ -72,18 +72,23 @@
    <property name="nativeMenuBar">
     <bool>true</bool>
    </property>
-   <widget class="QMenu" name="menuNodes">
-    <property name="font">
-     <font>
-      <pointsize>11</pointsize>
-     </font>
+   <widget class="QMenu" name="menuNode">
+    <property name="title">
+     <string>Node</string>
     </property>
+    <addaction name="actionOpenNode"/>
+    <addaction name="actionSearch_Node"/>
+   </widget>
+   <widget class="QMenu" name="menuWindows">
     <property name="title">
-     <string>Nodes</string>
+     <string>Windows</string>
     </property>
-    <addaction name="actionOpen_Node"/>
+    <addaction name="actionCascade"/>
+    <addaction name="actionNext_window"/>
+    <addaction name="actionPrev_Window"/>
    </widget>
-   <addaction name="menuNodes"/>
+   <addaction name="menuNode"/>
+   <addaction name="menuWindows"/>
   </widget>
   <widget class="QToolBar" name="mainToolBar">
    <attribute name="toolBarArea">
@@ -139,21 +144,97 @@
    </attribute>
    <widget class="QWidget" name="dockWidgetContents"/>
   </widget>
-  <action name="actionOpen_Node">
+  <action name="actionOpenNode">
    <property name="text">
     <string>Open Node</string>
    </property>
-   <property name="font">
-    <font>
-     <pointsize>12</pointsize>
-    </font>
-   </property>
    <property name="shortcut">
     <string>Ctrl+O</string>
    </property>
   </action>
+  <action name="actionSearch_Node">
+   <property name="text">
+    <string>Search Node</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+F</string>
+   </property>
+  </action>
+  <action name="actionCascade">
+   <property name="text">
+    <string>Cascade</string>
+   </property>
+   <property name="shortcut">
+    <string>Meta+Ctrl+C</string>
+   </property>
+  </action>
+  <action name="actionNext_window">
+   <property name="text">
+    <string>Next Window</string>
+   </property>
+   <property name="shortcut">
+    <string>Meta+Ctrl+Left</string>
+   </property>
+  </action>
+  <action name="actionPrev_Window">
+   <property name="text">
+    <string>Prev Window</string>
+   </property>
+   <property name="shortcut">
+    <string>Meta+Ctrl+Right</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>actionCascade</sender>
+   <signal>triggered()</signal>
+   <receiver>mdiAreaEditor</receiver>
+   <slot>cascadeSubWindows()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>602</x>
+     <y>349</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>actionPrev_Window</sender>
+   <signal>triggered()</signal>
+   <receiver>mdiAreaEditor</receiver>
+   <slot>activatePreviousSubWindow()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>602</x>
+     <y>349</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>actionNext_window</sender>
+   <signal>triggered()</signal>
+   <receiver>mdiAreaEditor</receiver>
+   <slot>activateNextSubWindow()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>602</x>
+     <y>349</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
diff --git a/ccs/node/control_unit/AttributeValueRangeDialog.cpp b/ccs/node/control_unit/AttributeValueRangeDialog.cpp
new file mode 100644
index 000000000..cda907b1c
--- /dev/null
+++ b/ccs/node/control_unit/AttributeValueRangeDialog.cpp
@@ -0,0 +1,66 @@
+#include "AttributeValueRangeDialog.h"
+#include "ui_AttributeValueRangeDialog.h"
+
+
+AttributeValueRangeDialog::AttributeValueRangeDialog(QWidget *parent) :
+    QDialog(parent),
+    current_row(-1),
+    attribute_name(QString("")),
+    attribute_default_value(QString("")),
+    attribute_default_max_value(QString("")),
+    attribute_default_min_value(QString("")),
+    ui(new Ui::AttributeValueRangeDialog)
+{
+    ui->setupUi(this);
+    connect(ui->buttonBox, SIGNAL(accepted()),
+            this, SLOT(endWork()));
+    setModal(true);
+}
+
+AttributeValueRangeDialog::AttributeValueRangeDialog(int _current_row,
+                                                     const QString& _attribute_name,
+                                                     const QString& _attribute_default_value,
+                                                     const QString& _attribute_default_max_value,
+                                                     const QString& _attribute_default_min_value,
+                                                     QWidget *parent):
+    QDialog(parent),
+    current_row(_current_row),
+    attribute_name(_attribute_name),
+    attribute_default_value(_attribute_default_value),
+    attribute_default_max_value(_attribute_default_max_value),
+    attribute_default_min_value(_attribute_default_min_value),
+    ui(new Ui::AttributeValueRangeDialog)
+{
+    ui->setupUi(this);
+    connect(ui->buttonBox, SIGNAL(accepted()),
+            this, SLOT(endWork()));
+    setModal(true);
+
+    //set the value for the editing
+    ui->lineEditAttributeName->setText(_attribute_name);
+    ui->lineEditDefaultValue->setText(_attribute_default_value);
+    ui->lineEditMaxValue->setText(_attribute_default_max_value);
+    ui->lineEditMinValue->setText(_attribute_default_min_value);
+}
+
+AttributeValueRangeDialog::~AttributeValueRangeDialog()
+{
+    delete ui;
+}
+
+void AttributeValueRangeDialog::endWork() {
+    if(current_row > -1) {
+        //we are updating a driver description so emit the rigth signal
+        emit updateAttributeDescription(current_row,
+                                        ui->lineEditAttributeName->text(),
+                                        ui->lineEditDefaultValue->text(),
+                                        ui->lineEditMaxValue->text(),
+                                        ui->lineEditMinValue->text());
+    } else {
+        //emit the value of the driver because user has accepted
+        emit newAttributeDescription(ui->lineEditAttributeName->text(),
+                                     ui->lineEditDefaultValue->text(),
+                                     ui->lineEditMaxValue->text(),
+                                     ui->lineEditMinValue->text());
+    }
+}
diff --git a/ccs/node/control_unit/AttributeValueRangeDialog.h b/ccs/node/control_unit/AttributeValueRangeDialog.h
new file mode 100644
index 000000000..0325333fe
--- /dev/null
+++ b/ccs/node/control_unit/AttributeValueRangeDialog.h
@@ -0,0 +1,45 @@
+#ifndef ATTRIBUTEVALUERANGEDIALOG_H
+#define ATTRIBUTEVALUERANGEDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class AttributeValueRangeDialog;
+}
+
+class AttributeValueRangeDialog : public QDialog
+{
+    Q_OBJECT
+    int current_row;
+    const QString& attribute_name;
+    const QString& attribute_default_value;
+    const QString& attribute_default_max_value;
+    const QString& attribute_default_min_value;
+public:
+    AttributeValueRangeDialog(QWidget *parent = 0);
+    AttributeValueRangeDialog(int _current_row,
+                              const QString& _attribute_name,
+                              const QString& _attribute_default_value,
+                              const QString& _attribute_default_max_value,
+                              const QString& _attribute_default_min_value,
+                              QWidget *parent = 0);
+    ~AttributeValueRangeDialog();
+private slots:
+    void endWork();
+
+signals:
+    void newAttributeDescription(const QString& attribute_name,
+                                 const QString& attribute_default_value,
+                                 const QString& attribute_default_max_value,
+                                 const QString& attribute_default_min_value);
+    void updateAttributeDescription(int current_row,
+                                    const QString& attribute_name,
+                                    const QString& attribute_default_value,
+                                    const QString& attribute_default_max_value,
+                                    const QString& attribute_default_min_value);
+
+private:
+    Ui::AttributeValueRangeDialog *ui;
+};
+
+#endif // ATTRIBUTEVALUERANGEDIALOG_H
diff --git a/ccs/node/control_unit/AttributeValueRangeDialog.ui b/ccs/node/control_unit/AttributeValueRangeDialog.ui
new file mode 100644
index 000000000..f8b0ef61b
--- /dev/null
+++ b/ccs/node/control_unit/AttributeValueRangeDialog.ui
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AttributeValueRangeDialog</class>
+ <widget class="QDialog" name="AttributeValueRangeDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>405</width>
+    <height>170</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>400</width>
+    <height>170</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>4</number>
+   </property>
+   <property name="leftMargin">
+    <number>2</number>
+   </property>
+   <property name="topMargin">
+    <number>2</number>
+   </property>
+   <property name="rightMargin">
+    <number>2</number>
+   </property>
+   <property name="bottomMargin">
+    <number>2</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineEditAttributeName"/>
+     </item>
+     <item row="2" column="0" alignment="Qt::AlignRight">
+      <widget class="QLabel" name="label_3">
+       <property name="text">
+        <string>Max value:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" alignment="Qt::AlignRight">
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Name:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Default value</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="lineEditDefaultValue"/>
+     </item>
+     <item row="3" column="0" alignment="Qt::AlignRight">
+      <widget class="QLabel" name="label_4">
+       <property name="text">
+        <string>Min value:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLineEdit" name="lineEditMaxValue"/>
+     </item>
+     <item row="3" column="1">
+      <widget class="QLineEdit" name="lineEditMinValue"/>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AttributeValueRangeDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AttributeValueRangeDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ccs/node/control_unit/ControUnitInstanceEditor.cpp b/ccs/node/control_unit/ControUnitInstanceEditor.cpp
index 8ca79aa07..9d3430c9a 100644
--- a/ccs/node/control_unit/ControUnitInstanceEditor.cpp
+++ b/ccs/node/control_unit/ControUnitInstanceEditor.cpp
@@ -1,38 +1,41 @@
 #include "ControUnitInstanceEditor.h"
 #include "ui_ControUnitInstanceEditor.h"
+#include "DriverDescriptionInputDialog.h"
+#include "AttributeValueRangeDialog.h"
+
+#include <QDebug>
+#include <QStandardItem>
+#include <QMessageBox>
+
+#include <cassert>
 
 using namespace chaos::common::data;
-ControUnitInstanceEditor::ControUnitInstanceEditor(const QString& unit_server_uid) :
-    PresenterWidget(NULL),
-    unit_server_uid(unit_server_uid),
-    control_unit_type(""),
-    control_unit_uid(""),
-    ui(new Ui::ControUnitInstanceEditor)
-{
-    ui->setupUi(this);
-}
+using namespace chaos::metadata_service_client;
+using namespace chaos::metadata_service_client::api_proxy;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
 
 ControUnitInstanceEditor::ControUnitInstanceEditor(const QString& unit_server_uid,
                                                    const QString& control_unit_type):
     PresenterWidget(NULL),
-    unit_server_uid(unit_server_uid),
-    control_unit_type(control_unit_type),
-    control_unit_uid(""),
+    is_in_editing(false),
     ui(new Ui::ControUnitInstanceEditor)
 {
     ui->setupUi(this);
+    ui->labelUnitServer->setText(unit_server_uid);
+    ui->labelControlUnitType->setText(control_unit_type);
 }
 
 ControUnitInstanceEditor::ControUnitInstanceEditor(const QString& unit_server_uid,
-                                                   const QString& control_unit_type,
-                                                   const QString& control_unit_uid):
+                                                   const QString& control_unit_uid,
+                                                   bool edit_instance):
     PresenterWidget(NULL),
-    unit_server_uid(unit_server_uid),
-    control_unit_type(control_unit_type),
-    control_unit_uid(control_unit_uid),
+    is_in_editing(edit_instance),
     ui(new Ui::ControUnitInstanceEditor)
 {
     ui->setupUi(this);
+    ui->labelUnitServer->setText(unit_server_uid);
+    ui->lineEditControlUnitUniqueID->setText(control_unit_uid);
+    ui->lineEditControlUnitUniqueID->setEnabled(false);
 }
 
 ControUnitInstanceEditor::~ControUnitInstanceEditor()
@@ -41,17 +44,12 @@ ControUnitInstanceEditor::~ControUnitInstanceEditor()
 }
 
 void ControUnitInstanceEditor::initUI() {
-
-    //initilization view
-    is_in_editing = unit_server_uid.size() &&
-            control_unit_type.size() &&
-            control_unit_uid.size();
+    //fetch the api proxy
+    set_inst_desc_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<SetInstanceDescription>();
+    get_instance_api_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<GetInstance>();
 
     //setting the default info
-    ui->labelUnitServer->setText(unit_server_uid);
-    ui->labelControlUnitType->setText(control_unit_type);
     if(is_in_editing) {
-        ui->lineEditControlUnitUniqueID->setText(control_unit_uid);
         setTabTitle(tr("Control unit instance editing"));
     }else{
         setTabTitle(tr("Control unit instance creation"));
@@ -77,9 +75,9 @@ void ControUnitInstanceEditor::initUI() {
 
     table_model_dataset_attribute_setup = new QStandardItemModel(this);
     table_model_dataset_attribute_setup->setHorizontalHeaderItem(0, new QStandardItem(QString("Name")));
-    table_model_dataset_attribute_setup->setHorizontalHeaderItem(1, new QStandardItem(QString("Max Value")));
-    table_model_dataset_attribute_setup->setHorizontalHeaderItem(2, new QStandardItem(QString("Min Value")));
-    table_model_dataset_attribute_setup->setHorizontalHeaderItem(3, new QStandardItem(QString("Default Value")));
+    table_model_dataset_attribute_setup->setHorizontalHeaderItem(1, new QStandardItem(QString("Default Value")));
+    table_model_dataset_attribute_setup->setHorizontalHeaderItem(2, new QStandardItem(QString("Max Value")));
+    table_model_dataset_attribute_setup->setHorizontalHeaderItem(3, new QStandardItem(QString("Min Value")));
 
     // Attach the model to the view
     ui->tableViewDatasetAttributes->setModel(table_model_dataset_attribute_setup);
@@ -90,6 +88,156 @@ void ControUnitInstanceEditor::initUI() {
     //finisch to configure table
     ui->tableViewDatasetAttributes->setEditTriggers(QAbstractItemView::NoEditTriggers);
     ui->tableViewDatasetAttributes->setSelectionBehavior(QAbstractItemView::SelectRows);
+
+    //widget connection initialization
+    connect(ui->tableViewDriverSpecification->selectionModel(),
+            SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+            SLOT(tableDriverDescriptionCurrentChanged(QModelIndex,QModelIndex)));
+
+    connect(ui->tableViewDriverSpecification->selectionModel(),
+            SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+            SLOT(tableDriverDescriptionSelectionChanged(QItemSelection,QItemSelection)));
+
+    connect(ui->tableViewDatasetAttributes->selectionModel(),
+            SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+            SLOT(tableDriverDescriptionCurrentChanged(QModelIndex,QModelIndex)));
+
+    connect(ui->tableViewDatasetAttributes->selectionModel(),
+            SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+            SLOT(tableDriverDescriptionSelectionChanged(QItemSelection,QItemSelection)));
+
+    if(is_in_editing) {
+        //get information from server
+        submitApiResult(QString("get_instance"),
+                        get_instance_api_proxy->execute(ui->labelUnitServer->text().toStdString(),
+                                                        ui->lineEditControlUnitUniqueID->text().toStdString()));
+    }
+
+}
+
+SetInstanceDescription *ControUnitInstanceEditor::prepareSetInstanceApi() {
+    assert(set_inst_desc_proxy);
+    //cu id
+    set_inst_desc_proxy->control_unit_uid = ui->lineEditControlUnitUniqueID->text().toStdString();
+    //us id
+    set_inst_desc_proxy->unit_server_uid = ui->labelUnitServer->text().toStdString();
+    //cu implementation
+    set_inst_desc_proxy->control_unit_implementation = ui->labelControlUnitType->text().toStdString();
+    //autoload
+    set_inst_desc_proxy->auto_load = ui->checkBoxAutoLoad->isChecked();
+    //load parameter
+    set_inst_desc_proxy->load_parameter = ui->textEditLoadParameter->toPlainText().toStdString();
+    //add all driver description
+    set_inst_desc_proxy->clearAllDriverDescriptions();
+    for(int idx = 0;
+        idx < table_model_driver_spec->rowCount();
+        idx++) {
+        QString drv_name = table_model_driver_spec->item(idx, 0)->text();
+        QString drv_vers = table_model_driver_spec->item(idx, 1)->text();
+        QString drv_init = table_model_driver_spec->item(idx, 2)->text();
+        set_inst_desc_proxy->addDriverDesscription(drv_name.toStdString(),
+                                                   drv_vers.toStdString(),
+                                                   drv_init.toStdString());
+        qDebug() << "Added driver description for: "<< drv_name << "-" << drv_vers <<"-"<<drv_init;
+    }
+
+    //add all attribute description
+    set_inst_desc_proxy->clearAllAttributeConfig();
+    for(int idx = 0;
+        idx < table_model_dataset_attribute_setup->rowCount();
+        idx++) {
+        QString attr_name = table_model_dataset_attribute_setup->item(idx, 0)->text();
+        QString attr_def = table_model_dataset_attribute_setup->item(idx, 1)->text();
+        QString attr_max = table_model_dataset_attribute_setup->item(idx, 2)->text();
+        QString attr_min = table_model_dataset_attribute_setup->item(idx, 3)->text();
+        set_inst_desc_proxy->addAttributeConfig(attr_name.toStdString(),
+                                                attr_def.toStdString(),
+                                                attr_max.toStdString(),
+                                                attr_min.toStdString());
+        qDebug() << "Added attribute description for: "<< attr_name <<"-" << attr_def << " of ["<<attr_min<<"/"<<attr_max<<"]";
+    }
+    return set_inst_desc_proxy;
+}
+
+#define CHECK_AND_SET_LABEL(x,v)  if(api_result->hasKey(x)) {  v->setText(QString::fromStdString(api_result->getStringValue(x))); } else {  v->setText(QString());}
+#define CHECK_AND_SET_CHECK(x,v) if(api_result->hasKey(x)) { v->setChecked(api_result->getBoolValue(x)); } else {  v->setChecked(false);}
+
+void ControUnitInstanceEditor::fillUIFromInstanceInfo(QSharedPointer<chaos::common::data::CDataWrapper> api_result) {
+    table_model_driver_spec->setRowCount(0);
+    table_model_dataset_attribute_setup->setRowCount(0);
+
+    CHECK_AND_SET_LABEL(chaos::NodeDefinitionKey::NODE_PARENT, ui->labelUnitServer)
+            CHECK_AND_SET_LABEL(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, ui->lineEditControlUnitUniqueID)
+            CHECK_AND_SET_LABEL("control_unit_implementation", ui->labelControlUnitType)
+            CHECK_AND_SET_CHECK("auto_load", ui->checkBoxAutoLoad)
+            CHECK_AND_SET_LABEL("load_parameter", ui->textEditLoadParameter)
+
+            //add driverdesc
+            if(api_result->hasKey("driver_description")) {
+        std::auto_ptr<CMultiTypeDataArrayWrapper> arr_drv(api_result->getVectorValue("driver_description"));
+        for(int idx = 0;
+            idx != arr_drv->size();
+            idx++) {
+            std::auto_ptr<CDataWrapper> drv_desc(arr_drv->getCDataWrapperElementAtIndex(idx));
+
+            QStandardItem *item = NULL;
+            QList<QStandardItem*> row_item;
+            row_item.append(item = new QStandardItem(QString::fromStdString(drv_desc->getStringValue("name"))));
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+            row_item.append(item = new QStandardItem(QString::fromStdString(drv_desc->getStringValue("version"))));
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+            row_item.append(item = new QStandardItem(QString::fromStdString(drv_desc->getStringValue("init_parameter"))));
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+            table_model_driver_spec->appendRow(row_item);
+
+            ui->pushButtonEditDriverDescription->setEnabled(false);
+        }
+    }
+    //add attribute desc
+    if(api_result->hasKey("attribute_value_descriptions")) {
+        std::auto_ptr<CMultiTypeDataArrayWrapper> arr_attr(api_result->getVectorValue("attribute_value_descriptions"));
+        for(int idx = 0;
+            idx != arr_attr->size();
+            idx++) {
+            std::auto_ptr<CDataWrapper> attr_desc(arr_attr->getCDataWrapperElementAtIndex(idx));
+
+            QStandardItem *item = NULL;
+            QList<QStandardItem*> row_item;
+            if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME)) {
+                row_item.append(item = new QStandardItem(QString::fromStdString(attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME))));
+            } else {
+                row_item.append(item = new QStandardItem(QString()));
+            }
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+            if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
+                row_item.append(item = new QStandardItem(QString::fromStdString(attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE))));
+            } else {
+                row_item.append(item = new QStandardItem(QString()));
+            }
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+            if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) {
+                row_item.append(item = new QStandardItem(QString::fromStdString(attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE))));
+            } else {
+                row_item.append(item = new QStandardItem(QString()));
+            }
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+            if(attr_desc->hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) {
+                row_item.append(item = new QStandardItem(QString::fromStdString(attr_desc->getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE))));
+            } else {
+                row_item.append(item = new QStandardItem(QString()));
+            }
+            item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+            table_model_dataset_attribute_setup->appendRow(row_item);
+
+            ui->pushButtonEditAttribute->setEnabled(false);
+        }
+    }
+
 }
 
 bool ControUnitInstanceEditor::canClose() {
@@ -98,5 +246,185 @@ bool ControUnitInstanceEditor::canClose() {
 
 void ControUnitInstanceEditor::onApiDone(QString tag,
                                          QSharedPointer<CDataWrapper> api_result) {
+    if(tag.compare("save_instance") == 0) {
+        QMessageBox::information(this,
+                                 tr("Instance Save"),
+                                 tr("Instance has been successfull saved"));
+        //close editor
+        closeTab();
+    } else if(tag.compare("get_instance") == 0) {
+        //fill gui with instance info
+        fillUIFromInstanceInfo(api_result);
+    }
+}
 
+void ControUnitInstanceEditor::on_pushButtonSaveInstance_clicked()
+{
+    submitApiResult(QString("save_instance"),
+                    prepareSetInstanceApi()->execute());
+}
+
+void ControUnitInstanceEditor::on_pushButtonAddDriverDescription_clicked()
+{
+    //add new driver description
+    DriverDescriptionInputDialog new_driver_dialog(this);
+    connect(&new_driver_dialog,
+            SIGNAL(newDriverDescription(QString,QString,QString)),
+            SLOT(addNewDriverDescription(QString,QString,QString)));
+    new_driver_dialog.exec();
+}
+
+void ControUnitInstanceEditor::on_pushButtonEditDriverDescription_clicked()
+{
+    //mod driver description
+    QModelIndex current_index = ui->tableViewDriverSpecification->selectionModel()->selectedRows().first();
+    DriverDescriptionInputDialog edit_driver_dialog(current_index.row(),
+                                                    table_model_driver_spec->item(current_index.row(), 0)->text(),
+                                                    table_model_driver_spec->item(current_index.row(), 1)->text(),
+                                                    table_model_driver_spec->item(current_index.row(), 2)->text(),
+                                                    this);
+    connect(&edit_driver_dialog,
+            SIGNAL(updateDriverDescription(int,QString,QString,QString)),
+            SLOT(updateDriverDescription(int,QString,QString,QString)));
+    edit_driver_dialog.exec();
+}
+
+void ControUnitInstanceEditor::on_pushButtonDeleteDriverDescription_clicked()
+{
+    //delete driver description
+    QModelIndexList selected_row = ui->tableViewDriverSpecification->selectionModel()->selectedIndexes();
+    foreach(QModelIndex index, selected_row) {
+        table_model_driver_spec->removeRow(index.row());
+    }
 }
+
+
+void ControUnitInstanceEditor::on_pushButtonAddAttribute_clicked()
+{
+    //add new attribute description
+    AttributeValueRangeDialog new_attr_dialog(this);
+    connect(&new_attr_dialog,
+            SIGNAL(newAttributeDescription(QString,QString,QString,QString)),
+            SLOT(addAttributeDescription(QString,QString,QString,QString)));
+    new_attr_dialog.exec();
+}
+
+void ControUnitInstanceEditor::on_pushButtonEditAttribute_clicked()
+{
+    //add new attribute description
+    //mod driver description
+    QModelIndex current_index = ui->tableViewDatasetAttributes->selectionModel()->selectedRows().first();
+    AttributeValueRangeDialog edit_attr_dialog(current_index.row(),
+                                               table_model_dataset_attribute_setup->item(current_index.row(), 0)->text(),
+                                               table_model_dataset_attribute_setup->item(current_index.row(), 1)->text(),
+                                               table_model_dataset_attribute_setup->item(current_index.row(), 2)->text(),
+                                               table_model_dataset_attribute_setup->item(current_index.row(), 3)->text(),
+                                               this);
+    connect(&edit_attr_dialog,
+            SIGNAL(updateAttributeDescription(int,QString,QString,QString,QString)),
+            SLOT(updateAttributeDescription(int,QString,QString,QString,QString)));
+    edit_attr_dialog.exec();
+}
+
+void ControUnitInstanceEditor::on_pushButtonRemoveAttribute_clicked()
+{
+    //delete driver description
+    QModelIndexList selected_row = ui->tableViewDatasetAttributes->selectionModel()->selectedIndexes();
+    foreach(QModelIndex index, selected_row) {
+        table_model_dataset_attribute_setup->removeRow(index.row());
+    }
+}
+
+void ControUnitInstanceEditor::addNewDriverDescription(const QString& driver_name,
+                                                       const QString& driver_version,
+                                                       const QString& driver_init_parameter) {
+
+    QStandardItem *item = NULL;
+    QList<QStandardItem*> row_item;
+    row_item.append(item = new QStandardItem(driver_name));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+    row_item.append(item = new QStandardItem(driver_version));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+    row_item.append(item = new QStandardItem(driver_init_parameter));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+    table_model_driver_spec->appendRow(row_item);
+    ui->pushButtonEditDriverDescription->setEnabled(false);
+}
+
+void ControUnitInstanceEditor::updateDriverDescription(int current_row,
+                                                       const QString& driver_name,
+                                                       const QString& driver_version,
+                                                       const QString& driver_init_parameter) {
+    table_model_driver_spec->setItem(current_row, 0, new QStandardItem(driver_name));
+    table_model_driver_spec->setItem(current_row, 1, new QStandardItem(driver_version));
+    table_model_driver_spec->setItem(current_row, 2, new QStandardItem(driver_init_parameter));
+    ui->pushButtonEditDriverDescription->setEnabled(false);
+}
+
+void ControUnitInstanceEditor::addAttributeDescription(const QString& attribute_name,
+                                                       const QString& attribute_default_value,
+                                                       const QString& attribute_default_max_value,
+                                                       const QString& attribute_default_min_value) {
+    QStandardItem *item = NULL;
+    QList<QStandardItem*> row_item;
+    row_item.append(item = new QStandardItem(attribute_name));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+    row_item.append(item = new QStandardItem(attribute_default_value));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+    row_item.append(item = new QStandardItem(attribute_default_max_value));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+    row_item.append(item = new QStandardItem(attribute_default_min_value));
+    item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+    table_model_dataset_attribute_setup->appendRow(row_item);
+    ui->pushButtonEditAttribute->setEnabled(false);
+}
+
+void ControUnitInstanceEditor::updateAttributeDescription(int current_row,
+                                                          const QString& attribute_name,
+                                                          const QString& attribute_default_value,
+                                                          const QString& attribute_default_max_value,
+                                                          const QString& attribute_default_min_value) {
+    table_model_dataset_attribute_setup->setItem(current_row, 0, new QStandardItem(attribute_name));
+    table_model_dataset_attribute_setup->setItem(current_row, 1, new QStandardItem(attribute_default_value));
+    table_model_dataset_attribute_setup->setItem(current_row, 2, new QStandardItem(attribute_default_max_value));
+    table_model_dataset_attribute_setup->setItem(current_row, 3, new QStandardItem(attribute_default_min_value));
+    ui->pushButtonEditAttribute->setEnabled(false);
+}
+
+void ControUnitInstanceEditor::tableDriverDescriptionCurrentChanged(const QModelIndex &current,
+                                                                    const QModelIndex &previous) {
+    (void)current;
+    (void)previous;
+    //enable the edit button only if is selected one element on table
+    bool enable = false;
+    if(QObject::sender() == ui->tableViewDriverSpecification) {
+        enable = ui->tableViewDriverSpecification->selectionModel()->selectedRows().size()==1;
+        ui->pushButtonEditDriverDescription->setEnabled(enable);
+    }else{
+        enable = ui->tableViewDatasetAttributes->selectionModel()->selectedRows().size()==1;
+        ui->pushButtonEditAttribute->setEnabled(enable);
+    }
+    qDebug() << "tableDriverDescriptionCurrentChanged, edit enable state:" <<enable;
+}
+
+void ControUnitInstanceEditor::tableDriverDescriptionSelectionChanged(const QItemSelection& selected,
+                                                                      const QItemSelection& unselected) {
+    (void)selected;
+    (void)unselected;
+    //enable the edit button only if is selected one element on table
+    bool enable = false;
+    if(QObject::sender() == ui->tableViewDriverSpecification) {
+        enable = ui->tableViewDriverSpecification->selectionModel()->selectedRows().size()==1;
+        ui->pushButtonEditDriverDescription->setEnabled(enable);
+    }else{
+        enable = ui->tableViewDatasetAttributes->selectionModel()->selectedRows().size()==1;
+        ui->pushButtonEditAttribute->setEnabled(enable);
+    }
+    qDebug() << "tableDriverDescriptionSelectionChanged, edit enable state:" << enable;
+}
+
diff --git a/ccs/node/control_unit/ControUnitInstanceEditor.h b/ccs/node/control_unit/ControUnitInstanceEditor.h
index e36bd5384..a7b39c375 100644
--- a/ccs/node/control_unit/ControUnitInstanceEditor.h
+++ b/ccs/node/control_unit/ControUnitInstanceEditor.h
@@ -4,6 +4,8 @@
 #include "../../presenter/PresenterWidget.h"
 
 #include <QWidget>
+#include <QItemSelection>
+#include <QModelIndexList>
 #include <QStandardItemModel>
 
 namespace Ui {
@@ -14,9 +16,9 @@ class ControUnitInstanceEditor :
         public PresenterWidget
 {
     Q_OBJECT
-    QString unit_server_uid;
-    QString control_unit_type;
-    QString control_unit_uid;
+   // QString unit_server_uid;
+   // QString control_unit_type;
+   // QString control_unit_uid;
 
     bool is_in_editing;
 
@@ -24,24 +26,65 @@ class ControUnitInstanceEditor :
     QStandardItemModel *table_model_driver_spec;
     QStandardItemModel *table_model_dataset_attribute_setup;
 public:
-    //!Create instance without specifing the type
-    explicit ControUnitInstanceEditor(const QString& unit_server_uid);
     //!Create instance with unit server and cu type
     explicit ControUnitInstanceEditor(const QString& unit_server_uid,
                                       const QString& control_unit_type);
     //!edit the control unit
     explicit ControUnitInstanceEditor(const QString& unit_server_uid,
-                                      const QString& control_unit_type,
-                                      const QString& control_unit_uid);
+                                      const QString &control_unit_uid,
+                                      bool edit_instance);
     ~ControUnitInstanceEditor();
 
+    //read the ui and preapre the api proxy with the value
+    chaos::metadata_service_client::api_proxy::control_unit::SetInstanceDescription *prepareSetInstanceApi();
+
+    void fillUIFromInstanceInfo(QSharedPointer<chaos::common::data::CDataWrapper> api_result);
 protected:
     void initUI();
     bool canClose();
     void onApiDone(QString tag,
                    QSharedPointer<chaos::common::data::CDataWrapper> api_result);
 
+private slots:
+    void on_pushButtonSaveInstance_clicked();
+
+    void on_pushButtonAddDriverDescription_clicked();
+
+    void on_pushButtonEditDriverDescription_clicked();
+
+    void on_pushButtonDeleteDriverDescription_clicked();
+
+    void tableDriverDescriptionCurrentChanged(const QModelIndex &current,
+                                              const QModelIndex &previous);
+    void tableDriverDescriptionSelectionChanged(const QItemSelection& selected,
+                                                const QItemSelection& unselected);
+    void on_pushButtonAddAttribute_clicked();
+
+    void on_pushButtonEditAttribute_clicked();
+
+    void on_pushButtonRemoveAttribute_clicked();
+
+    void addNewDriverDescription(const QString& driver_name,
+                                 const QString& driver_version,
+                                 const QString& driver_init_parameter);
+    void updateDriverDescription(int current_row,
+                                 const QString& driver_name,
+                                 const QString& driver_version,
+                                 const QString& driver_init_parameter);
+
+    void addAttributeDescription(const QString& attribute_name,
+                                 const QString& attribute_default_value,
+                                 const QString& attribute_default_max_value,
+                                 const QString& attribute_default_min_value);
+    void updateAttributeDescription(int current_row,
+                                    const QString& attribute_name,
+                                    const QString& attribute_default_value,
+                                    const QString& attribute_default_max_value,
+                                    const QString& attribute_default_min_value);
 private:
+    //set instance api proxy
+    chaos::metadata_service_client::api_proxy::control_unit::SetInstanceDescription *set_inst_desc_proxy;
+    chaos::metadata_service_client::api_proxy::control_unit::GetInstance *get_instance_api_proxy;
     Ui::ControUnitInstanceEditor *ui;
 };
 
diff --git a/ccs/node/control_unit/ControUnitInstanceEditor.ui b/ccs/node/control_unit/ControUnitInstanceEditor.ui
index 9d51c2f01..d73bf41a3 100644
--- a/ccs/node/control_unit/ControUnitInstanceEditor.ui
+++ b/ccs/node/control_unit/ControUnitInstanceEditor.ui
@@ -76,7 +76,7 @@
         <item row="0" column="2" alignment="Qt::AlignLeft|Qt::AlignVCenter">
          <widget class="QLabel" name="labelUnitServer">
           <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
@@ -101,7 +101,7 @@
            </font>
           </property>
           <property name="text">
-           <string>unit server that host the cu instance</string>
+           <string/>
           </property>
          </widget>
         </item>
@@ -132,7 +132,7 @@
         <item row="1" column="2">
          <widget class="QLabel" name="labelControlUnitType">
           <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
@@ -146,7 +146,7 @@
           <property name="maximumSize">
            <size>
             <width>203</width>
-            <height>16777215</height>
+            <height>20</height>
            </size>
           </property>
           <property name="font">
@@ -157,12 +157,12 @@
            </font>
           </property>
           <property name="text">
-           <string>unit control unit type</string>
+           <string/>
           </property>
          </widget>
         </item>
         <item row="1" column="3">
-         <widget class="QPushButton" name="pushButton">
+         <widget class="QPushButton" name="pushButtonChooseControlUnitType">
           <property name="sizePolicy">
            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
             <horstretch>0</horstretch>
@@ -180,7 +180,7 @@
          </widget>
         </item>
         <item row="2" column="3">
-         <widget class="QPushButton" name="pushButton_4">
+         <widget class="QPushButton" name="pushButtonCheckUniqueID">
           <property name="font">
            <font>
             <pointsize>11</pointsize>
@@ -232,7 +232,7 @@
          <property name="frameShadow">
           <enum>QFrame::Raised</enum>
          </property>
-         <layout class="QVBoxLayout" name="verticalLayout" stretch="0,5">
+         <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,5">
           <property name="spacing">
            <number>4</number>
           </property>
@@ -248,6 +248,18 @@
           <property name="bottomMargin">
            <number>2</number>
           </property>
+          <item>
+           <widget class="QCheckBox" name="checkBoxAutoLoad">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string>autoload</string>
+            </property>
+           </widget>
+          </item>
           <item>
            <layout class="QHBoxLayout" name="horizontalLayout_2">
             <property name="sizeConstraint">
@@ -279,6 +291,11 @@
                 <height>100</height>
                </size>
               </property>
+              <property name="font">
+               <font>
+                <pointsize>11</pointsize>
+               </font>
+              </property>
               <property name="placeholderText">
                <string>Initialization parameter</string>
               </property>
@@ -305,6 +322,17 @@
             </item>
             <item>
              <widget class="QTableView" name="tableViewDriverSpecification">
+              <property name="font">
+               <font>
+                <pointsize>11</pointsize>
+               </font>
+              </property>
+              <property name="editTriggers">
+               <set>QAbstractItemView::NoEditTriggers</set>
+              </property>
+              <property name="selectionMode">
+               <enum>QAbstractItemView::MultiSelection</enum>
+              </property>
               <attribute name="horizontalHeaderDefaultSectionSize">
                <number>20</number>
               </attribute>
@@ -313,7 +341,7 @@
             <item>
              <layout class="QHBoxLayout" name="horizontalLayoutDriverControl">
               <property name="spacing">
-               <number>2</number>
+               <number>4</number>
               </property>
               <property name="leftMargin">
                <number>2</number>
@@ -341,14 +369,39 @@
                </spacer>
               </item>
               <item>
-               <widget class="QPushButton" name="pushButton_3">
+               <widget class="QPushButton" name="pushButtonDeleteDriverDescription">
+                <property name="font">
+                 <font>
+                  <pointsize>11</pointsize>
+                 </font>
+                </property>
                 <property name="text">
                  <string>remove</string>
                 </property>
                </widget>
               </item>
               <item>
-               <widget class="QPushButton" name="pushButton_2">
+               <widget class="QPushButton" name="pushButtonEditDriverDescription">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="font">
+                 <font>
+                  <pointsize>11</pointsize>
+                 </font>
+                </property>
+                <property name="text">
+                 <string>Edit</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButtonAddDriverDescription">
+                <property name="font">
+                 <font>
+                  <pointsize>11</pointsize>
+                 </font>
+                </property>
                 <property name="text">
                  <string>add</string>
                 </property>
@@ -405,7 +458,13 @@
            <number>2</number>
           </property>
           <item>
-           <widget class="QTableView" name="tableViewDatasetAttributes"/>
+           <widget class="QTableView" name="tableViewDatasetAttributes">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+             </font>
+            </property>
+           </widget>
           </item>
           <item>
            <layout class="QHBoxLayout" name="horizontalLayout_5">
@@ -426,26 +485,38 @@
              </spacer>
             </item>
             <item>
-             <widget class="QPushButton" name="pushButton_8">
+             <widget class="QPushButton" name="pushButtonRemoveAttribute">
+              <property name="font">
+               <font>
+                <pointsize>11</pointsize>
+               </font>
+              </property>
+              <property name="text">
+               <string>remove</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="pushButtonEditAttribute">
               <property name="font">
                <font>
                 <pointsize>11</pointsize>
                </font>
               </property>
               <property name="text">
-               <string>PushButton</string>
+               <string>edit</string>
               </property>
              </widget>
             </item>
             <item>
-             <widget class="QPushButton" name="pushButton_7">
+             <widget class="QPushButton" name="pushButtonAddAttribute">
               <property name="font">
                <font>
                 <pointsize>11</pointsize>
                </font>
               </property>
               <property name="text">
-               <string>PushButton</string>
+               <string>add</string>
               </property>
              </widget>
             </item>
@@ -468,7 +539,7 @@
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout_4">
       <property name="spacing">
-       <number>2</number>
+       <number>4</number>
       </property>
       <property name="leftMargin">
        <number>2</number>
@@ -496,14 +567,12 @@
        </spacer>
       </item>
       <item>
-       <widget class="QPushButton" name="pushButton_6">
-        <property name="text">
-         <string>cancel</string>
+       <widget class="QPushButton" name="pushButtonSaveInstance">
+        <property name="font">
+         <font>
+          <pointsize>11</pointsize>
+         </font>
         </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QPushButton" name="pushButton_5">
         <property name="text">
          <string>save</string>
         </property>
diff --git a/ccs/node/control_unit/DriverDescriptionInputDialog.cpp b/ccs/node/control_unit/DriverDescriptionInputDialog.cpp
new file mode 100644
index 000000000..47a52e695
--- /dev/null
+++ b/ccs/node/control_unit/DriverDescriptionInputDialog.cpp
@@ -0,0 +1,59 @@
+#include "DriverDescriptionInputDialog.h"
+#include "ui_DriverDescriptionInputDialog.h"
+
+DriverDescriptionInputDialog::DriverDescriptionInputDialog(QWidget *_parent) :
+    QDialog(_parent),
+    current_row(-1),
+    driver_name(QString("")),
+    driver_version(QString("")),
+    driver_init_parameter(QString("")),
+    ui(new Ui::DriverDescriptionInputDialog)
+{
+    ui->setupUi(this);
+    connect(ui->buttonBox, SIGNAL(accepted()),
+            this, SLOT(endWork()));
+    setModal(true);
+}
+
+DriverDescriptionInputDialog::DriverDescriptionInputDialog(int _current_row,
+                                                           const QString& _driver_name,
+                                                           const QString& _driver_version,
+                                                           const QString& _driver_init_parameter,
+                                                           QWidget *_parent):
+    QDialog(_parent),
+    current_row(_current_row),
+    driver_name(_driver_name),
+    driver_version(_driver_version),
+    driver_init_parameter(_driver_init_parameter),
+    ui(new Ui::DriverDescriptionInputDialog)
+{
+    ui->setupUi(this);
+    connect(ui->buttonBox, SIGNAL(accepted()),
+            this, SLOT(endWork()));
+    setModal(true);
+
+    //set the value for the editing
+    ui->lineEditName->setText(driver_name);
+    ui->lineEditVersion->setText(driver_version);
+    ui->textEditInitParameter->setText(driver_init_parameter);
+}
+
+DriverDescriptionInputDialog::~DriverDescriptionInputDialog()
+{
+    delete ui;
+}
+
+void DriverDescriptionInputDialog::endWork() {
+    if(current_row > -1) {
+        //we are updating a driver description so emit the rigth signal
+        emit updateDriverDescription(current_row,
+                                     ui->lineEditName->text(),
+                                     ui->lineEditVersion->text(),
+                                     ui->textEditInitParameter->toPlainText());
+    } else {
+        //emit the value of the driver because user has accepted
+        emit newDriverDescription(ui->lineEditName->text(),
+                                  ui->lineEditVersion->text(),
+                                  ui->textEditInitParameter->toPlainText());
+    }
+}
diff --git a/ccs/node/control_unit/DriverDescriptionInputDialog.h b/ccs/node/control_unit/DriverDescriptionInputDialog.h
new file mode 100644
index 000000000..706a4e3d7
--- /dev/null
+++ b/ccs/node/control_unit/DriverDescriptionInputDialog.h
@@ -0,0 +1,42 @@
+#ifndef DRIVERDESCRIPTIONINPUTDIALOG_H
+#define DRIVERDESCRIPTIONINPUTDIALOG_H
+
+#include <QDialog>
+#include <QModelIndex>
+namespace Ui {
+class DriverDescriptionInputDialog;
+}
+
+class DriverDescriptionInputDialog : public QDialog
+{
+    Q_OBJECT
+    int current_row;
+    const QString& driver_name;
+    const QString& driver_version;
+    const QString& driver_init_parameter;
+public:
+    DriverDescriptionInputDialog(QWidget *parent = 0);
+    DriverDescriptionInputDialog(int current_row,
+                                 const QString& _driver_name,
+                                 const QString& _driver_version,
+                                 const QString& _driver_init_parameter,
+                                 QWidget *parent = 0);
+    ~DriverDescriptionInputDialog();
+
+private slots:
+    void endWork();
+
+signals:
+    void newDriverDescription(const QString& driver_name,
+                              const QString& driver_version,
+                              const QString& driver_init_parameter);
+    void updateDriverDescription(int current_row,
+                                 const QString& driver_name,
+                                 const QString& driver_version,
+                                 const QString& driver_init_parameter);
+
+private:
+    Ui::DriverDescriptionInputDialog *ui;
+};
+
+#endif // DRIVERDESCRIPTIONINPUTDIALOG_H
diff --git a/ccs/node/control_unit/DriverDescriptionInputDialog.ui b/ccs/node/control_unit/DriverDescriptionInputDialog.ui
new file mode 100644
index 000000000..eafcfccd0
--- /dev/null
+++ b/ccs/node/control_unit/DriverDescriptionInputDialog.ui
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <author>Claudio Bisegni</author>
+ <class>DriverDescriptionInputDialog</class>
+ <widget class="QDialog" name="DriverDescriptionInputDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>431</width>
+    <height>257</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>4</number>
+   </property>
+   <property name="leftMargin">
+    <number>10</number>
+   </property>
+   <property name="topMargin">
+    <number>10</number>
+   </property>
+   <property name="rightMargin">
+    <number>10</number>
+   </property>
+   <property name="bottomMargin">
+    <number>10</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="lineEditVersion">
+       <property name="placeholderText">
+        <string>driver version</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" alignment="Qt::AlignRight">
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Class Name</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" alignment="Qt::AlignRight">
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Version:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineEditName">
+       <property name="placeholderText">
+        <string>driver class</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0" alignment="Qt::AlignRight|Qt::AlignTop">
+      <widget class="QLabel" name="label_3">
+       <property name="text">
+        <string>Init Paramter:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QTextEdit" name="textEditInitParameter">
+       <property name="placeholderText">
+        <string>driver initialization parameter</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>lineEditName</tabstop>
+  <tabstop>lineEditVersion</tabstop>
+  <tabstop>textEditInitParameter</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>DriverDescriptionInputDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>DriverDescriptionInputDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>290</x>
+     <y>243</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ccs/node/unit_server/Test.qml b/ccs/node/unit_server/Test.qml
deleted file mode 100644
index 12a3f7f1b..000000000
--- a/ccs/node/unit_server/Test.qml
+++ /dev/null
@@ -1,5 +0,0 @@
-import QtQuick 2.4
-
-TestForm {
-}
-
diff --git a/ccs/node/unit_server/TestForm.ui.qml b/ccs/node/unit_server/TestForm.ui.qml
deleted file mode 100644
index b14bbbce0..000000000
--- a/ccs/node/unit_server/TestForm.ui.qml
+++ /dev/null
@@ -1,7 +0,0 @@
-import QtQuick 2.4
-
-Item {
-    width: 400
-    height: 400
-}
-
diff --git a/ccs/node/unit_server/UnitServerEditor.cpp b/ccs/node/unit_server/UnitServerEditor.cpp
index d1bea9984..2975cd726 100644
--- a/ccs/node/unit_server/UnitServerEditor.cpp
+++ b/ccs/node/unit_server/UnitServerEditor.cpp
@@ -15,6 +15,7 @@ using namespace chaos::common::data;
 using namespace chaos::metadata_service_client;
 using namespace chaos::metadata_service_client::api_proxy;
 using namespace chaos::metadata_service_client::api_proxy::node;
+using namespace chaos::metadata_service_client::api_proxy::control_unit;
 
 UnitServerEditor::UnitServerEditor(const QString &_node_unique_id) :
     PresenterWidget(NULL),
@@ -30,6 +31,10 @@ UnitServerEditor::UnitServerEditor(const QString &_node_unique_id) :
             this, SLOT(customMenuRequested(QPoint)));
 
     gnd_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<GetNodeDescription>();
+    cu_si_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<SearchInstancesByUS>();
+    cu_si_proxy->unit_server_uid = _node_unique_id.toStdString();
+
+    cu_di_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<DeleteInstance>();
 }
 
 UnitServerEditor::~UnitServerEditor()
@@ -44,17 +49,19 @@ void UnitServerEditor::initUI() {
     //create cu type list model
     list_model_cu_type = new QStringListModel(this);
     ui->listViewCUType->setModel(list_model_cu_type);
+    ui->listViewCUType->setSelectionMode(QAbstractItemView::MultiSelection);
 
     //connect update button to interla slot
-    connect(ui->pushButtonUpdateUnitServerInfo, SIGNAL(clicked()), this, SLOT(updateUSInfo()));
+    connect(ui->pushButtonUpdateAllInfo, SIGNAL(clicked()), this, SLOT(updateAll()));
 
     // Create a new model
     // QStandardItemModel(int rows, int columns, QObject * parent = 0)
     table_model = new QStandardItemModel(this);
     table_model->setHorizontalHeaderItem(0, new QStandardItem(QString("UID")));
-    table_model->setHorizontalHeaderItem(1, new QStandardItem(QString("Type")));
+    table_model->setHorizontalHeaderItem(1, new QStandardItem(QString("Implementation")));
     table_model->setHorizontalHeaderItem(2, new QStandardItem(QString("State")));
     table_model->setHorizontalHeaderItem(3, new QStandardItem(QString("State SM")));
+
     // Attach the model to the view
     ui->tableView->setModel(table_model);
 
@@ -65,8 +72,21 @@ void UnitServerEditor::initUI() {
     ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
     ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
 
+    //set connection
+    connect(ui->listViewCUType->selectionModel(),
+            SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+            this, SLOT(handleSelectionChanged(QItemSelection)));
+
+    connect(ui->tableView->selectionModel(),
+            SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+            SLOT(tableCurrentChanged(QModelIndex,QModelIndex)));
+
+    connect(ui->tableView->selectionModel(),
+            SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
+            SLOT(tableSelectionChanged(QItemSelection,QItemSelection)));
+
     //load info
-    updateUSInfo();
+    updateAll();
 }
 
 bool UnitServerEditor::canClose() {
@@ -92,12 +112,40 @@ void UnitServerEditor::customMenuRequested(QPoint pos){
     menu->popup(ui->tableView->viewport()->mapToGlobal(pos));
 }
 
-void UnitServerEditor::updateUSInfo() {
-    ApiProxyResult api_result = gnd_proxy->execute(node_unique_id.toStdString());
-    submitApiResult(tr("gnd"),
-                    api_result);
+void UnitServerEditor::updateAll() {
+    submitApiResult(QString("gnd"),
+                    gnd_proxy->execute(node_unique_id.toStdString()));
+    submitApiResult(QString("cu_si"),
+                    cu_si_proxy->execute(0, 100));
+}
+
+void UnitServerEditor::handleSelectionChanged(const QItemSelection& selection) {
+    assert(cu_si_proxy);
+    //remove all previously impl from the api container
+    cu_si_proxy->control_unit_implementation.clear();
+
+    //add the new selected
+    foreach (QModelIndex element, selection.indexes()) {
+        QString impl = element.data().toString();
+        qDebug() << "Add " << impl << " as filter for instances search";
+        cu_si_proxy->control_unit_implementation.push_back(impl.toStdString());
+    }
+    //resend the search
+    submitApiResult(QString("cu_si"),
+                    cu_si_proxy->execute());
+}
+
+void UnitServerEditor::tableCurrentChanged(const QModelIndex &current,
+                                           const QModelIndex &previous) {
+    ui->pushButtonEditInstance->setEnabled(ui->tableView->selectionModel()->selectedRows().size() > 0);
 }
 
+void UnitServerEditor::tableSelectionChanged(const QItemSelection& selected,
+                                             const QItemSelection& unselected) {
+    ui->pushButtonEditInstance->setEnabled(ui->tableView->selectionModel()->selectedRows().size() > 0);
+}
+
+
 void UnitServerEditor::onApiDone(QString tag,
                                  QSharedPointer<chaos::common::data::CDataWrapper> api_result) {
     qDebug() << "Received asyncApiResult event of tag:" << tag;
@@ -136,6 +184,33 @@ void UnitServerEditor::onApiDone(QString tag,
             }
         }
         list_model_cu_type->setStringList(cy_type_list);
+    } else if(tag.compare("cu_si") == 0) {
+        //whe have the result for the control unit searchs
+        table_model->setRowCount(0);
+        if(!api_result.isNull() && api_result->hasKey("node_search_result_page")) {
+            CMultiTypeDataArrayWrapper *arr =  api_result->getVectorValue("node_search_result_page");
+            for(int i = 0;
+                i < arr->size();
+                i++) {
+                auto_ptr<CDataWrapper> found_node(arr->getCDataWrapperElementAtIndex(i));
+
+                QList<QStandardItem *> row_item;
+                QStandardItem *item = NULL;
+                row_item.append(item = new QStandardItem(QString::fromStdString(found_node->getStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID))));
+                item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+                row_item.append(item = new QStandardItem(QString::fromStdString(found_node->getStringValue("control_unit_implementation"))));
+                item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+                row_item.append(item = new QStandardItem(QString::fromStdString("---")));
+                item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+                row_item.append(item = new QStandardItem(QString::fromStdString("---")));
+                item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+
+                table_model->appendRow(row_item);
+            }
+        }
     }
 }
 
@@ -153,3 +228,34 @@ void UnitServerEditor::on_pushButtonCreateNewInstance_clicked()
     addWidgetToPresenter(new ControUnitInstanceEditor(node_unique_id,
                                                       selected_index.first().data().toString()));
 }
+
+void UnitServerEditor::on_pushButtonUpdateAllInfo_clicked()
+{
+    updateAll();
+}
+
+void UnitServerEditor::on_pushButtonRemoveInstance_clicked()
+{
+    assert(cu_di_proxy);
+    //add the new selected
+    foreach (QModelIndex element, ui->tableView->selectionModel()->selectedIndexes()) {
+        QString cu_inst_id = table_model->item(element.row(), 0)->text();
+        qDebug() << "Remove " << cu_inst_id << " instance";
+        submitApiResult(QString("cu_ri"),
+                        cu_di_proxy->execute(node_unique_id.toStdString(),
+                                             cu_inst_id.toStdString()));
+    }
+    //update the result
+    updateAll();
+}
+
+void UnitServerEditor::on_pushButtonEditInstance_clicked()
+{
+    foreach (QModelIndex element, ui->tableView->selectionModel()->selectedRows()) {
+        QString cu_inst_id = table_model->item(element.row(), 0)->text();
+        qDebug() << "Edit " << cu_inst_id << " instance";
+        addWidgetToPresenter(new ControUnitInstanceEditor(node_unique_id,
+                                                          cu_inst_id,
+                                                          true));
+    }
+}
diff --git a/ccs/node/unit_server/UnitServerEditor.h b/ccs/node/unit_server/UnitServerEditor.h
index 833ee9e4a..37275e791 100644
--- a/ccs/node/unit_server/UnitServerEditor.h
+++ b/ccs/node/unit_server/UnitServerEditor.h
@@ -3,8 +3,10 @@
 
 #include "../../presenter/PresenterWidget.h"
 
+#include <QItemSelection>
 #include <QStringListModel>
 #include <QStandardItemModel>
+
 namespace Ui {
 class UnitServerEditor;
 }
@@ -18,7 +20,8 @@ class UnitServerEditor :
     QStringListModel *list_model_cu_type;
     //query proxy
     chaos::metadata_service_client::api_proxy::node::GetNodeDescription *gnd_proxy;
-
+    chaos::metadata_service_client::api_proxy::control_unit::SearchInstancesByUS *cu_si_proxy;
+    chaos::metadata_service_client::api_proxy::control_unit::DeleteInstance *cu_di_proxy;
 public:
     explicit UnitServerEditor(const QString& _node_unique_id);
     ~UnitServerEditor();
@@ -26,10 +29,22 @@ public:
 private slots:
     void customMenuRequested(QPoint pos);
 
-    void updateUSInfo();
+    void updateAll();
 
     void on_pushButtonCreateNewInstance_clicked();
 
+    void handleSelectionChanged(const QItemSelection& selection);
+
+    void on_pushButtonUpdateAllInfo_clicked();
+
+    void on_pushButtonRemoveInstance_clicked();
+
+    void on_pushButtonEditInstance_clicked();
+
+    void tableCurrentChanged(const QModelIndex &current,
+                             const QModelIndex &previous);
+    void tableSelectionChanged(const QItemSelection& selected,
+                               const QItemSelection& unselected);
 protected:
     void initUI();
     bool canClose();
diff --git a/ccs/node/unit_server/UnitServerEditor.ui b/ccs/node/unit_server/UnitServerEditor.ui
index a7d71b38f..eb5458e91 100644
--- a/ccs/node/unit_server/UnitServerEditor.ui
+++ b/ccs/node/unit_server/UnitServerEditor.ui
@@ -19,7 +19,7 @@
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1">
+  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,0">
    <property name="spacing">
     <number>2</number>
    </property>
@@ -45,9 +45,9 @@
        <number>2</number>
       </property>
       <item>
-       <layout class="QGridLayout" name="gridLayout" columnstretch="0,0,0" rowminimumheight="0,0,0" columnminimumwidth="0,0,0">
+       <layout class="QGridLayout" name="gridLayout" columnstretch="0,0" rowminimumheight="0,0,0" columnminimumwidth="0,0">
         <property name="spacing">
-         <number>-1</number>
+         <number>6</number>
         </property>
         <item row="1" column="0" alignment="Qt::AlignRight">
          <widget class="QLabel" name="label_2">
@@ -121,18 +121,6 @@
           </property>
          </widget>
         </item>
-        <item row="2" column="2">
-         <widget class="QPushButton" name="pushButtonUpdateUnitServerInfo">
-          <property name="font">
-           <font>
-            <pointsize>11</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>Update</string>
-          </property>
-         </widget>
-        </item>
         <item row="2" column="1">
          <widget class="QLabel" name="labelRegistrationTimestamp">
           <property name="font">
@@ -187,7 +175,19 @@
         </widget>
        </item>
        <item>
-        <widget class="QListView" name="listViewCUType"/>
+        <widget class="QListView" name="listViewCUType">
+         <property name="font">
+          <font>
+           <pointsize>11</pointsize>
+          </font>
+         </property>
+         <property name="editTriggers">
+          <set>QAbstractItemView::NoEditTriggers</set>
+         </property>
+         <property name="showDropIndicator" stdset="0">
+          <bool>false</bool>
+         </property>
+        </widget>
        </item>
        <item>
         <widget class="QFrame" name="frameCUTypeControl">
@@ -205,7 +205,7 @@
          </property>
          <layout class="QHBoxLayout" name="horizontalLayout_2">
           <property name="spacing">
-           <number>-1</number>
+           <number>6</number>
           </property>
           <property name="leftMargin">
            <number>2</number>
@@ -271,7 +271,19 @@
         </widget>
        </item>
        <item>
-        <widget class="QTableView" name="tableView"/>
+        <widget class="QTableView" name="tableView">
+         <property name="font">
+          <font>
+           <pointsize>11</pointsize>
+          </font>
+         </property>
+         <property name="selectionMode">
+          <enum>QAbstractItemView::MultiSelection</enum>
+         </property>
+         <attribute name="horizontalHeaderDefaultSectionSize">
+          <number>20</number>
+         </attribute>
+        </widget>
        </item>
        <item>
         <widget class="QFrame" name="frameCUInstanceControl">
@@ -303,6 +315,30 @@
           <property name="bottomMargin">
            <number>2</number>
           </property>
+          <item>
+           <widget class="QPushButton" name="pushButtonCUInstancePrevPage">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string>&lt;&lt;</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButtonCUInstanceNextPage">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string>&gt;&gt;</string>
+            </property>
+           </widget>
+          </item>
           <item>
            <spacer name="horizontalSpacer_3">
             <property name="orientation">
@@ -324,7 +360,22 @@
              </font>
             </property>
             <property name="text">
-             <string>remove instance</string>
+             <string>remove</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButtonEditInstance">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string>edit</string>
             </property>
            </widget>
           </item>
@@ -336,7 +387,7 @@
              </font>
             </property>
             <property name="text">
-             <string>add instance</string>
+             <string>add</string>
             </property>
            </widget>
           </item>
@@ -363,6 +414,35 @@
      </widget>
     </widget>
    </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_4">
+     <item>
+      <spacer name="horizontalSpacer_5">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushButtonUpdateAllInfo">
+       <property name="font">
+        <font>
+         <pointsize>11</pointsize>
+        </font>
+       </property>
+       <property name="text">
+        <string>Update All</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
   </layout>
  </widget>
  <resources/>
diff --git a/ccs/presenter/PresenterWidget.cpp b/ccs/presenter/PresenterWidget.cpp
index 8e6cdad2c..b67a1a696 100644
--- a/ccs/presenter/PresenterWidget.cpp
+++ b/ccs/presenter/PresenterWidget.cpp
@@ -31,6 +31,11 @@ void PresenterWidget::setTabTitle(const QString& title) {
     editor_subwindow->setWindowTitle(title);
 }
 
+void PresenterWidget::closeTab() {
+    if(!editor_subwindow) return;
+    editor_subwindow->close();
+}
+
 void PresenterWidget::closeEvent(QCloseEvent *event) {
     if(canClose()){
         event->accept();
@@ -43,7 +48,7 @@ void PresenterWidget::addWidgetToPresenter(PresenterWidget *p_w) {
 }
 
 void PresenterWidget::submitApiResult(const QString& api_tag,
-                                      ApiProxyResult& api_result) {
+                                      ApiProxyResult api_result) {
     api_processor.submitApiResult(api_tag,
                                   api_result,
                                   this,
diff --git a/ccs/presenter/PresenterWidget.h b/ccs/presenter/PresenterWidget.h
index 5e24e4905..fa88d2d8a 100644
--- a/ccs/presenter/PresenterWidget.h
+++ b/ccs/presenter/PresenterWidget.h
@@ -27,11 +27,6 @@ public:
     virtual bool canClose() = 0;
     virtual void initUI() = 0;
 
-protected:
-    //!submit api result for async wait termination
-    void submitApiResult(const QString& api_tag,
-                         chaos::metadata_service_client::api_proxy::ApiProxyResult& api_result);
-
 private:
     void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
     void setSubWindow(QMdiSubWindow *_editor_subwindow);
@@ -49,8 +44,15 @@ private slots:
 protected:
     ApiAsyncProcessor api_processor;
     void setTabTitle(const QString& title);
+
+    void closeTab();
+
     void addWidgetToPresenter(PresenterWidget *p_w);
 
+    //!submit api result for async wait termination
+    void submitApiResult(const QString& api_tag,
+                         chaos::metadata_service_client::api_proxy::ApiProxyResult api_result);
+
     //!Api has ben called successfully
     virtual void onApiDone(QString tag,
                            QSharedPointer<chaos::common::data::CDataWrapper> api_result);
diff --git a/ccs/search/SearchNode.cpp b/ccs/search/SearchNode.cpp
index c12f8e6ba..4b84cfb0a 100644
--- a/ccs/search/SearchNode.cpp
+++ b/ccs/search/SearchNode.cpp
@@ -25,5 +25,5 @@ void SearchNode::on_pushButtonStartSearch_clicked()
 {
     int idx =  ui->comboBoxSearchType->currentIndex();
     qDebug() << "Start search with type:" << idx << " and search criteria:" << ui->lineEditSearchCriteria->text();
-    presenter->showCommandPresenter(new SearchNodeResult(idx, ui->lineEditSearchCriteria->text()));
+    presenter->showCommandPresenter(new SearchNodeResult());
 }
diff --git a/ccs/search/SearchNodeResult.cpp b/ccs/search/SearchNodeResult.cpp
index 56129d512..dd9362b24 100644
--- a/ccs/search/SearchNodeResult.cpp
+++ b/ccs/search/SearchNodeResult.cpp
@@ -10,19 +10,13 @@ using namespace chaos::metadata_service_client;
 using namespace chaos::metadata_service_client::api_proxy;
 using namespace chaos::metadata_service_client::api_proxy::node;
 
-SearchNodeResult::SearchNodeResult(int _search_type,
-                                   const QString &_search_criteria) :
+SearchNodeResult::SearchNodeResult() :
     PresenterWidget(NULL),
-    search_type(_search_type),
-    search_criteria(_search_criteria),
     current_page(0),
     current_page_length(30),
     ui(new Ui::SearchNodeResult)
 {
     ui->setupUi(this);
-
-    //fetch the api porxy
-    ns_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<NodeSearch>();
 }
 
 SearchNodeResult::~SearchNodeResult()
@@ -30,32 +24,19 @@ SearchNodeResult::~SearchNodeResult()
     delete ui;
 }
 
-void SearchNodeResult::getSearchTypeAsString(QString& type_description) {
-    switch (search_type) {
-    case 0:
-        type_description = "All type";
-        break;
-    case 1:
-        type_description = "Unit server";
-        break;
-    case 2:
-        type_description = "Control unit";
-        break;
-    default:
-        break;
-    }
-}
-
 bool SearchNodeResult::canClose() {
     return true;
 }
 
 void SearchNodeResult::initUI() {
     setTabTitle("Search Result");
-    QString search_type_desc;
-    getSearchTypeAsString(search_type_desc);
-    ui->labelType->setText(search_type_desc);
-    ui->labelCriteria->setText(search_criteria);
+
+    //fetch the api porxy
+    ns_proxy = ChaosMetadataServiceClient::getInstance()->getApiProxy<NodeSearch>();
+
+    QStringList search_types;
+    search_types << "All types" << "Unit server" << "Control unit";
+    ui->comboBoxSearchType->addItems(search_types);
 
     // Create a new model
     // QStandardItemModel(int rows, int columns, QObject * parent = 0)
@@ -72,16 +53,6 @@ void SearchNodeResult::initUI() {
     //finisch to configure table
     ui->tableViewResult->setEditTriggers(QAbstractItemView::NoEditTriggers);
     ui->tableViewResult->setSelectionBehavior(QAbstractItemView::SelectRows);
-
-    //start the query
-    ApiProxyResult api_result = ns_proxy->execute(search_criteria.toStdString(),
-                                                  search_type,
-                                                  current_page*current_page_length,
-                                                  current_page_length);
-
-    //submit api
-    submitApiResult(QString::fromUtf8("search_result"),
-                    api_result);
 }
 
 void SearchNodeResult::onApiDone(QString tag,
@@ -89,10 +60,9 @@ void SearchNodeResult::onApiDone(QString tag,
     qDebug() << "Received asyncApiResult event of tag:" << tag;
 
     if(tag.compare(tr("search_result"))==0) {
-        setEnabled(true);
 
         //clear the model
-        table_model->clear();
+        table_model->setRowCount(0);
         if(api_result->hasKey("node_search_result_page")) {
             //we have result
             CMultiTypeDataArrayWrapper *arr =  api_result->getVectorValue("node_search_result_page");
@@ -133,10 +103,10 @@ void SearchNodeResult::on_pushButtonOpenNodeInEditor_clicked()
     foreach (QModelIndex index, indexes) {
         QStandardItem *node_uid = table_model->item(index.row(), 0);
         QStandardItem *node_type = table_model->item(index.row(), 1);
-       if(node_type->text().compare(chaos::NodeType::NODE_TYPE_UNIT_SERVER) == 0) {
-           qDebug() << "Open unit server editor for" << node_uid->text();
-           addWidgetToPresenter(new UnitServerEditor(node_uid->text()));
-       }
+        if(node_type->text().compare(chaos::NodeType::NODE_TYPE_UNIT_SERVER) == 0) {
+            qDebug() << "Open unit server editor for" << node_uid->text();
+            addWidgetToPresenter(new UnitServerEditor(node_uid->text()));
+        }
     }
 }
 
@@ -145,3 +115,15 @@ void SearchNodeResult::on_tableViewResult_clicked(const QModelIndex &index)
     QModelIndexList indexes = ui->tableViewResult->selectionModel()->selectedIndexes();
     ui->pushButtonOpenNodeInEditor->setEnabled(indexes.size()>0);
 }
+
+void SearchNodeResult::on_pushButtonStartSearch_clicked()
+{
+    //submit api
+    submitApiResult(QString("search_result"),
+                    //start the query
+                    ns_proxy->execute(ui->lineEditSearchCriteria->text().toStdString(),
+                                      ui->comboBoxSearchType->currentIndex(),
+                                      current_page*current_page_length,
+                                      current_page_length)
+                    );
+}
diff --git a/ccs/search/SearchNodeResult.h b/ccs/search/SearchNodeResult.h
index 1c1a5251f..8b45ef68d 100644
--- a/ccs/search/SearchNodeResult.h
+++ b/ccs/search/SearchNodeResult.h
@@ -16,9 +16,6 @@ public PresenterWidget
 {
     Q_OBJECT
     //! search property
-    int search_type;
-    QString search_criteria;
-
     int current_page;
     int current_page_length;
 
@@ -28,12 +25,11 @@ public PresenterWidget
     void onApiDone(QString tag,
                         QSharedPointer<chaos::common::data::CDataWrapper> api_result);
 protected:
-    void getSearchTypeAsString(QString& type_description);
     void initUI();
     bool canClose();
 
 public:
-    explicit SearchNodeResult(int _search_type, const QString& _search_criteria);
+    explicit SearchNodeResult();
     ~SearchNodeResult();
 
 signals:
@@ -47,6 +43,7 @@ private slots:
 
     void on_tableViewResult_clicked(const QModelIndex &index);
 
+    void on_pushButtonStartSearch_clicked();
 
 private:
     Ui::SearchNodeResult *ui;
diff --git a/ccs/search/searchnoderesult.ui b/ccs/search/searchnoderesult.ui
index 1c51213bd..6923813ad 100644
--- a/ccs/search/searchnoderesult.ui
+++ b/ccs/search/searchnoderesult.ui
@@ -30,8 +30,8 @@
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <item>
       <layout class="QGridLayout" name="gridLayout">
-       <item row="1" column="1" alignment="Qt::AlignRight">
-        <widget class="QLabel" name="label_3">
+       <item row="0" column="1" alignment="Qt::AlignRight">
+        <widget class="QLabel" name="label_2">
          <property name="font">
           <font>
            <pointsize>11</pointsize>
@@ -42,10 +42,10 @@
          </property>
         </widget>
        </item>
-       <item row="0" column="3">
-        <widget class="QLabel" name="labelType">
+       <item row="1" column="1" alignment="Qt::AlignRight">
+        <widget class="QLabel" name="label">
          <property name="sizePolicy">
-          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
@@ -53,44 +53,38 @@
          <property name="font">
           <font>
            <pointsize>11</pointsize>
-           <weight>75</weight>
-           <bold>true</bold>
           </font>
          </property>
          <property name="text">
-          <string>type</string>
+          <string>Search type:</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="1" alignment="Qt::AlignRight">
-        <widget class="QLabel" name="label">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
+       <item row="0" column="3">
+        <widget class="QLineEdit" name="lineEditSearchCriteria"/>
+       </item>
+       <item row="0" column="4">
+        <widget class="QPushButton" name="pushButtonStartSearch">
          <property name="font">
           <font>
            <pointsize>11</pointsize>
           </font>
          </property>
          <property name="text">
-          <string>Search type:</string>
+          <string>Search</string>
+         </property>
+         <property name="default">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
        <item row="1" column="3">
-        <widget class="QLabel" name="labelCriteria">
-         <property name="font">
-          <font>
-           <pointsize>11</pointsize>
-           <weight>75</weight>
-           <bold>true</bold>
-          </font>
-         </property>
-         <property name="text">
-          <string>criteria</string>
+        <widget class="QComboBox" name="comboBoxSearchType">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
          </property>
         </widget>
        </item>
@@ -116,6 +110,9 @@
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>4</number>
+       </property>
        <item>
         <widget class="QPushButton" name="pushButtonPrevPage">
          <property name="enabled">
diff --git a/chaos/common/CMakeLists.txt b/chaos/common/CMakeLists.txt
index d728a6f91..e1cde8827 100644
--- a/chaos/common/CMakeLists.txt
+++ b/chaos/common/CMakeLists.txt
@@ -6,22 +6,22 @@ SET(common_lib_src	${common_lib_src}	async_central/AsyncCentralManager.cpp async
 
 SET(common_lib_src  ${common_lib_src}	action/ActionExecutionSafetySystem.cpp action/EventAction.cpp action/ActionDescriptor.cpp action/DeclareAction.cpp action/DomainActions.cpp)
 
-SET(common_lib_src  ${common_lib_src}	bson/oid.cpp bson/bson_validate.cpp 
+SET(common_lib_src  ${common_lib_src}	bson/oid.cpp bson/bson_validate.cpp
 										bson/base/parse_number.cpp bson/base/string_data.cpp bson/base/stringutils.cpp bson/base/status.cpp bson/base/error_codes.cpp
 										bson/murmurhash3/MurmurHash3.cpp
 										bson/mutable/document.cpp bson/mutable/element.cpp
 										bson/platform/process_id.cpp bson/platform/random.cpp
-										bson/util/hex.cpp bson/util/base64.cpp bson/util/time_support.cpp bson/util/time_support.cpp 
+										bson/util/hex.cpp bson/util/base64.cpp bson/util/time_support.cpp bson/util/time_support.cpp
 										bson/util/assert_util.cpp bson/util/bson_extract.cpp bson/util/jsobj.cpp bson/util/json.cpp bson/util/md5.cpp bson/util/safe_num.cpp)
 
 SET(common_lib_src  ${common_lib_src}	configuration/GlobalConfiguration.cpp)
 
 SET(common_lib_src  ${common_lib_src}	data/CDataWrapper.cpp data/CUSchemaDB.cpp data/DatasetDB.cpp data/entity_db/EntityDB.cpp data/entity_db/sqlite_impl/sqlite3.c
-										data/entity_db/sqlite_impl/SQLiteEntityDB.cpp data/entity/Entity.cpp data/broker/DataBroker.cpp data/broker/publisher/PublisherDataService.cpp 
+										data/entity_db/sqlite_impl/SQLiteEntityDB.cpp data/entity/Entity.cpp data/broker/DataBroker.cpp data/broker/publisher/PublisherDataService.cpp
 										data/broker/reader/ReaderDataService.cpp data/cache/FastHash.cpp data/cache/DataCache.cpp data/cache/LFDataCache.cpp )
 
 
-SET(common_lib_src  ${common_lib_src}	data/cache/ChannelValueAccessor.cpp data/cache/KeyGroupCache.cpp 
+SET(common_lib_src  ${common_lib_src}	data/cache/ChannelValueAccessor.cpp data/cache/KeyGroupCache.cpp
 										data/cache/AttributeValue.cpp data/cache/AttributeCache.cpp data/cache/AbstractSharedDomainCache.cpp
 										data/cache/AttributeValueSharedCache.cpp)
 
@@ -32,14 +32,14 @@ SET(common_lib_src  ${common_lib_src}	dispatcher/DefaultEventDispatcher.cpp disp
 
 SET(common_lib_src  ${common_lib_src}	event/EventClient.cpp event/AsioImplEventClient event/AsioEventForwarder.cpp
 										event/EventServer.cpp event/AsioImplEventServer.cpp event/AsioEventHandler.cpp
-										event/evt_desc/EventDescriptor.cpp event/evt_desc/AlertEventDescriptor.cpp 
-										event/evt_desc/InstrumentEventDescriptor.cpp event/evt_desc/CommandEventDescriptor.cpp 
-										event/evt_desc/CustomEventDescriptor.cpp event/channel/EventChannel.cpp 
+										event/evt_desc/EventDescriptor.cpp event/evt_desc/AlertEventDescriptor.cpp
+										event/evt_desc/InstrumentEventDescriptor.cpp event/evt_desc/CommandEventDescriptor.cpp
+										event/evt_desc/CustomEventDescriptor.cpp event/channel/EventChannel.cpp
 										event/channel/AlertEventChannel.cpp event/channel/InstrumentEventChannel.cpp)
 
 SET(common_lib_src  ${common_lib_src}	direct_io/DirectIOClient.cpp direct_io/DirectIOClientConnection.cpp direct_io/DirectIOServer.cpp direct_io/DirectIOURLManagment.cpp
 										direct_io/DirectIOServerEndpoint.cpp direct_io/DirectIODispatcher.cpp direct_io/DirectIOPerformanceSession.cpp
-										direct_io/impl/ZMQDirectIOClient.cpp direct_io/impl/ZMQDirectIOServer.cpp 
+										direct_io/impl/ZMQDirectIOClient.cpp direct_io/impl/ZMQDirectIOServer.cpp
 										direct_io/impl/ZMQBaseClass.cpp direct_io/impl/ZMQDirectIOClientConnection.cpp
 										direct_io/channel/DirectIOVirtualChannel.cpp direct_io/channel/DirectIOVirtualClientChannel.cpp direct_io/channel/DirectIOVirtualServerChannel.cpp
 										direct_io/channel/DirectIODeviceClientChannel.cpp direct_io/channel/DirectIODeviceServerChannel.cpp
@@ -49,11 +49,13 @@ SET(common_lib_src  ${common_lib_src}	direct_io/DirectIOClient.cpp direct_io/Dir
 SET(common_lib_src  ${common_lib_src}	io/IODataDriver.cpp io/IOMemcachedIODriver.cpp io/IODirectIODriver.cpp io/QueryFuture.cpp)
 
 SET(common_lib_src  ${common_lib_src}	message/DeviceMessageChannel.cpp
-                                        message/MDSMessageChannel.cpp
-                                        message/MessageChannel.cpp
-                                        message/NodeMessageChannel.cpp
-                                        message/MultiAddressMessageChannel.cpp
-                                        message/PerformanceNodeChannel.cpp)
+                                      message/MDSMessageChannel.cpp
+                                      message/MessageChannel.cpp
+																			message/MessageRequestFuture.cpp
+                                      message/NodeMessageChannel.cpp
+                                      message/MultiAddressMessageChannel.cpp
+																			message/MultiAddressMessageRequestFuture.cpp
+                                      message/PerformanceNodeChannel.cpp)
 
 SET(common_lib_src  ${common_lib_src}	network/NetworkBroker.cpp network/PerformanceManagment.cpp network/URLServiceFeeder.cpp network/URL.cpp)
 
@@ -81,11 +83,11 @@ ENDIF()
 
 #SET_TARGET_PROPERTIES(chaos_common_static PROPERTIES OUTPUT_NAME chaos_common)
 
-#set_target_properties(chaos_common PROPERTIES VERSION 1.0.0 SOVERSION 1) 
+#set_target_properties(chaos_common PROPERTIES VERSION 1.0.0 SOVERSION 1)
+
+TARGET_LINK_LIBRARIES(chaos_common ${common_lib_library})
 
-TARGET_LINK_LIBRARIES(chaos_common ${common_lib_library}) 
 
-        
 FILE(GLOB files "*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/common)
 FILE(GLOB files "async_central/*.h")
@@ -118,8 +120,8 @@ FILE(GLOB files "data/entity/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/common/data/entity)
 FILE(GLOB files "data/entity_db/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/common/data/entity_db)
-FILE(GLOB files "fsm/*.h")
-INSTALL(FILES ${files} DESTINATION include/chaos/common/fsm)
+FILE(GLOB files "property/*.h")
+INSTALL(FILES ${files} DESTINATION include/chaos/common/property)
 FILE(GLOB files "dispatcher/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/common/dispatcher)
 FILE(GLOB files "event/*.h")
diff --git a/chaos/common/action/ActionDescriptor.cpp b/chaos/common/action/ActionDescriptor.cpp
index 2a695e0df..2e66b0ef9 100644
--- a/chaos/common/action/ActionDescriptor.cpp
+++ b/chaos/common/action/ActionDescriptor.cpp
@@ -7,7 +7,7 @@
 //
 /*	
  *	ActionDescriptor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio. 
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/action/ActionDescriptor.h b/chaos/common/action/ActionDescriptor.h
index 44d86b7b7..2ae84a5c1 100644
--- a/chaos/common/action/ActionDescriptor.h
+++ b/chaos/common/action/ActionDescriptor.h
@@ -1,6 +1,6 @@
 /*	
  *	ActionDescriptor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/action/ChaosAction.h b/chaos/common/action/ChaosAction.h
index d5a07e1e4..0ab712658 100644
--- a/chaos/common/action/ChaosAction.h
+++ b/chaos/common/action/ChaosAction.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosAction.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio. *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
  *
diff --git a/chaos/common/action/DeclareAction.cpp b/chaos/common/action/DeclareAction.cpp
index 238748f40..a700d27f7 100644
--- a/chaos/common/action/DeclareAction.cpp
+++ b/chaos/common/action/DeclareAction.cpp
@@ -1,6 +1,6 @@
 /*	
  *	DeclareAction.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/action/DeclareAction.h b/chaos/common/action/DeclareAction.h
index 49bd04d4c..da9440321 100644
--- a/chaos/common/action/DeclareAction.h
+++ b/chaos/common/action/DeclareAction.h
@@ -1,6 +1,6 @@
 /*	
  *	DeclareAction.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio. 
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/action/DomainActions.cpp b/chaos/common/action/DomainActions.cpp
index c7e9e1ced..884f06539 100644
--- a/chaos/common/action/DomainActions.cpp
+++ b/chaos/common/action/DomainActions.cpp
@@ -1,6 +1,6 @@
 /*	
  *	DomainActions.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio. 
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/action/DomainActions.h b/chaos/common/action/DomainActions.h
index 8a37e1b88..703ac252b 100644
--- a/chaos/common/action/DomainActions.h
+++ b/chaos/common/action/DomainActions.h
@@ -1,6 +1,6 @@
 /*	
  *	DomainActions.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/async_central/AsyncCentralManager.cpp b/chaos/common/async_central/AsyncCentralManager.cpp
index f8d16b0a0..4557304b0 100644
--- a/chaos/common/async_central/AsyncCentralManager.cpp
+++ b/chaos/common/async_central/AsyncCentralManager.cpp
@@ -1,6 +1,6 @@
 /*
  *	AsyncCentralManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/async_central/AsyncCentralManager.h b/chaos/common/async_central/AsyncCentralManager.h
index 30077cc42..f2a7b605f 100644
--- a/chaos/common/async_central/AsyncCentralManager.h
+++ b/chaos/common/async_central/AsyncCentralManager.h
@@ -1,6 +1,6 @@
 /*
  *	AsyncCentralManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/async_central/TimerHandler.cpp b/chaos/common/async_central/TimerHandler.cpp
index 16adbda02..961b9b8ee 100644
--- a/chaos/common/async_central/TimerHandler.cpp
+++ b/chaos/common/async_central/TimerHandler.cpp
@@ -1,6 +1,6 @@
 /*
  *	TimerHandler.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/async_central/TimerHandler.h b/chaos/common/async_central/TimerHandler.h
index 97d4ce76f..6d401c6ab 100644
--- a/chaos/common/async_central/TimerHandler.h
+++ b/chaos/common/async_central/TimerHandler.h
@@ -1,6 +1,6 @@
 /*
  *	TimerHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/batch_command/BatchCommand.cpp b/chaos/common/batch_command/BatchCommand.cpp
index 41f74fa76..d8d714c86 100644
--- a/chaos/common/batch_command/BatchCommand.cpp
+++ b/chaos/common/batch_command/BatchCommand.cpp
@@ -1,6 +1,6 @@
 /*
  *	SlowCommand.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/batch_command/BatchCommand.h b/chaos/common/batch_command/BatchCommand.h
index 896dfc446..343c0a4c7 100644
--- a/chaos/common/batch_command/BatchCommand.h
+++ b/chaos/common/batch_command/BatchCommand.h
@@ -1,6 +1,6 @@
 /*
  *	BatchCommand.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -38,7 +38,7 @@ namespace chaos{
     
     namespace common {
         
-        //! The name space that group all foundamental class need by slow control !CHOAS implementation
+        //! The name space that group all foundamental class need by slow control !CHAOS implementation
         namespace batch_command {
             
             //forward declaration
diff --git a/chaos/common/batch_command/BatchCommandExecutor.cpp b/chaos/common/batch_command/BatchCommandExecutor.cpp
index ac0a51dc3..73119de4f 100644
--- a/chaos/common/batch_command/BatchCommandExecutor.cpp
+++ b/chaos/common/batch_command/BatchCommandExecutor.cpp
@@ -1,6 +1,6 @@
 /*
  *	BatchCommandExecutor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/batch_command/BatchCommandExecutor.h b/chaos/common/batch_command/BatchCommandExecutor.h
index 2132f7e88..3dc032031 100644
--- a/chaos/common/batch_command/BatchCommandExecutor.h
+++ b/chaos/common/batch_command/BatchCommandExecutor.h
@@ -1,6 +1,6 @@
 /*
  *	BatchCommandExecutor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/BufferTracker.h b/chaos/common/caching_system/caching_thread/BufferTracker.h
index 5a95182ed..b724831f3 100644
--- a/chaos/common/caching_system/caching_thread/BufferTracker.h
+++ b/chaos/common/caching_system/caching_thread/BufferTracker.h
@@ -1,6 +1,6 @@
 /*
  *	BufferTracker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/GarbageThread.h b/chaos/common/caching_system/caching_thread/GarbageThread.h
index 11c794637..ad591f0c0 100644
--- a/chaos/common/caching_system/caching_thread/GarbageThread.h
+++ b/chaos/common/caching_system/caching_thread/GarbageThread.h
@@ -1,6 +1,6 @@
 /*
  *	GarbageThread.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/tracker_interface/DataAggregationInterface.h b/chaos/common/caching_system/caching_thread/tracker_interface/DataAggregationInterface.h
index e08712ed3..c0c309d39 100644
--- a/chaos/common/caching_system/caching_thread/tracker_interface/DataAggregationInterface.h
+++ b/chaos/common/caching_system/caching_thread/tracker_interface/DataAggregationInterface.h
@@ -1,6 +1,6 @@
 /*
  *	DataAggregationFilterInterface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/tracker_interface/DataFetcherInterface.h b/chaos/common/caching_system/caching_thread/tracker_interface/DataFetcherInterface.h
index bb98487e9..a6f9bc933 100644
--- a/chaos/common/caching_system/caching_thread/tracker_interface/DataFetcherInterface.h
+++ b/chaos/common/caching_system/caching_thread/tracker_interface/DataFetcherInterface.h
@@ -1,6 +1,6 @@
 /*
  *	DataFetcherInterface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/tracker_interface/EmbeddedDataTransform.h b/chaos/common/caching_system/caching_thread/tracker_interface/EmbeddedDataTransform.h
index c554e4eb5..aa8e3d8f1 100644
--- a/chaos/common/caching_system/caching_thread/tracker_interface/EmbeddedDataTransform.h
+++ b/chaos/common/caching_system/caching_thread/tracker_interface/EmbeddedDataTransform.h
@@ -1,6 +1,6 @@
 /*
  *	EmbeddedDataTransform.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/trackers/AbstractDeviceTracker.h b/chaos/common/caching_system/caching_thread/trackers/AbstractDeviceTracker.h
index 17b27256f..46fa44b43 100644
--- a/chaos/common/caching_system/caching_thread/trackers/AbstractDeviceTracker.h
+++ b/chaos/common/caching_system/caching_thread/trackers/AbstractDeviceTracker.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractDeviceTracker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/caching_thread/trackers/FetcherDeviceTracker.h b/chaos/common/caching_system/caching_thread/trackers/FetcherDeviceTracker.h
index 1324bf606..a26d7b230 100644
--- a/chaos/common/caching_system/caching_thread/trackers/FetcherDeviceTracker.h
+++ b/chaos/common/caching_system/caching_thread/trackers/FetcherDeviceTracker.h
@@ -1,6 +1,6 @@
 /*
  *	FetcherDeviceTracker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/CommonBuffer.h b/chaos/common/caching_system/common_buffer/CommonBuffer.h
index 9e445b238..5f2aca3a1 100644
--- a/chaos/common/caching_system/common_buffer/CommonBuffer.h
+++ b/chaos/common/caching_system/common_buffer/CommonBuffer.h
@@ -1,6 +1,6 @@
 /*
  *	CommonBuffer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/Element.h b/chaos/common/caching_system/common_buffer/Element.h
index 0513177f5..2972e5656 100644
--- a/chaos/common/caching_system/common_buffer/Element.h
+++ b/chaos/common/caching_system/common_buffer/Element.h
@@ -1,6 +1,6 @@
 /*
  *	Element.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/IteratorBase.h b/chaos/common/caching_system/common_buffer/IteratorBase.h
index 08d9ab584..362607c17 100644
--- a/chaos/common/caching_system/common_buffer/IteratorBase.h
+++ b/chaos/common/caching_system/common_buffer/IteratorBase.h
@@ -1,6 +1,6 @@
 /*
  *	IteratorBase.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/IteratorGarbage.h b/chaos/common/caching_system/common_buffer/IteratorGarbage.h
index 751be22ef..3bd00d108 100644
--- a/chaos/common/caching_system/common_buffer/IteratorGarbage.h
+++ b/chaos/common/caching_system/common_buffer/IteratorGarbage.h
@@ -1,6 +1,6 @@
 /*
  *	IteratorGarbage.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/IteratorReader.h b/chaos/common/caching_system/common_buffer/IteratorReader.h
index b28ba0797..e4b8f2acb 100644
--- a/chaos/common/caching_system/common_buffer/IteratorReader.h
+++ b/chaos/common/caching_system/common_buffer/IteratorReader.h
@@ -1,6 +1,6 @@
 /*
  *	IteratorReader.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/MemoryAllocator.h b/chaos/common/caching_system/common_buffer/MemoryAllocator.h
index d6d666603..57524bed5 100644
--- a/chaos/common/caching_system/common_buffer/MemoryAllocator.h
+++ b/chaos/common/caching_system/common_buffer/MemoryAllocator.h
@@ -1,6 +1,6 @@
 /*
  *	MemoryAllocator.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/SmartPointer.h b/chaos/common/caching_system/common_buffer/SmartPointer.h
index dd17784fa..35caf859c 100644
--- a/chaos/common/caching_system/common_buffer/SmartPointer.h
+++ b/chaos/common/caching_system/common_buffer/SmartPointer.h
@@ -1,6 +1,6 @@
 /*
  *	SmartPointer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/data_element/AbstractDataElement.h b/chaos/common/caching_system/common_buffer/data_element/AbstractDataElement.h
index 40f6c46ab..fc1e6437d 100644
--- a/chaos/common/caching_system/common_buffer/data_element/AbstractDataElement.h
+++ b/chaos/common/caching_system/common_buffer/data_element/AbstractDataElement.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractDataElement.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Antonucci Flaminio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/data_element/DataElement.h b/chaos/common/caching_system/common_buffer/data_element/DataElement.h
index c73d6daad..82bbe5bc1 100644
--- a/chaos/common/caching_system/common_buffer/data_element/DataElement.h
+++ b/chaos/common/caching_system/common_buffer/data_element/DataElement.h
@@ -1,6 +1,6 @@
 /*
  *	DataElement.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/data_element/SmartData.h b/chaos/common/caching_system/common_buffer/data_element/SmartData.h
index 5e44a8f92..6ca68977a 100644
--- a/chaos/common/caching_system/common_buffer/data_element/SmartData.h
+++ b/chaos/common/caching_system/common_buffer/data_element/SmartData.h
@@ -1,6 +1,6 @@
 /*
  *	SmartData.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/helper/IdFactory.h b/chaos/common/caching_system/common_buffer/helper/IdFactory.h
index 991ec9fb5..f5f10c6fa 100644
--- a/chaos/common/caching_system/common_buffer/helper/IdFactory.h
+++ b/chaos/common/caching_system/common_buffer/helper/IdFactory.h
@@ -1,6 +1,6 @@
 /*
  *	IdFactory.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/caching_system/common_buffer/helper/MillisTime.h b/chaos/common/caching_system/common_buffer/helper/MillisTime.h
index 0faca9a2c..957a7084a 100644
--- a/chaos/common/caching_system/common_buffer/helper/MillisTime.h
+++ b/chaos/common/caching_system/common_buffer/helper/MillisTime.h
@@ -1,6 +1,6 @@
 /*
  *	Millis
- *	!CHOAS
+ *	!CHAOS
  *	Created by Flaminio Antonucci.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/chaos_constants.h b/chaos/common/chaos_constants.h
index dc8ea24f7..09b94776e 100644
--- a/chaos/common/chaos_constants.h
+++ b/chaos/common/chaos_constants.h
@@ -122,12 +122,18 @@ namespace chaos {
          */
         static const char * const NODE_UNIQUE_ID        = "ndk_uid";
         
-        //! defines the domain where the node belong[string]
+        //! defines the unique id that is parent of target node [string]
         /*!
-         Identify an unique set that enclose one or more producer, consumer and user interfaces.
+         Identify an unique id that is the parent of the node
          */
-        static const char * const NODE_PARENT_SET       = "ndk_parent_set";
-        
+        static const char * const NODE_PARENT           = "ndk_parent";
+
+            //! defines at which group the node belong [array of unique id]
+        /*!
+         Every entry of the array is a unique id of a group
+         */
+        static const char * const NODE_GROUP_SET       = "ndk_group_set";
+
         //! define the node type[string]
         /*!
          The type permit to identify kind of node is. For example
diff --git a/chaos/common/configuration/GlobalConfiguration.cpp b/chaos/common/configuration/GlobalConfiguration.cpp
index ae506c072..1bcf79384 100644
--- a/chaos/common/configuration/GlobalConfiguration.cpp
+++ b/chaos/common/configuration/GlobalConfiguration.cpp
@@ -1,6 +1,6 @@
 /*
  *	GlobalConfiguration.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/configuration/GlobalConfiguration.h b/chaos/common/configuration/GlobalConfiguration.h
index 0af4dd4b8..04d60a2db 100644
--- a/chaos/common/configuration/GlobalConfiguration.h
+++ b/chaos/common/configuration/GlobalConfiguration.h
@@ -1,6 +1,6 @@
 /*	
  *	GlobalConfiguration.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/BsonFragment.cpp b/chaos/common/data/BsonFragment.cpp
index 125d3057b..135c308fe 100644
--- a/chaos/common/data/BsonFragment.cpp
+++ b/chaos/common/data/BsonFragment.cpp
@@ -1,6 +1,6 @@
 /*
  *	BsonFragment.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/BsonFragment.h b/chaos/common/data/BsonFragment.h
index 26267a20c..4135ca30b 100644
--- a/chaos/common/data/BsonFragment.h
+++ b/chaos/common/data/BsonFragment.h
@@ -1,6 +1,6 @@
 /*
  *	BsonFragment.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp
index 5590c7355..24fdd57a3 100644
--- a/chaos/common/data/CDataWrapper.cpp
+++ b/chaos/common/data/CDataWrapper.cpp
@@ -1,6 +1,6 @@
 /*
  *	CDataWrapper.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -295,6 +295,22 @@ SerializationBuffer* CDataWrapper::getBSONData(){
     return result;
 }
 
+/*
+ Return the pointer of the data and the size. th eownership of data remain
+ of the CDataWrapper
+ */
+const char* CDataWrapper::getBSONRawData(int& size) {
+        //finalize the bson object
+    if( bsonBuilder->len()==0 ) return NULL;
+
+        //get the object
+    BSONObj bsonObject = bsonBuilder->asTempObj();
+        //we have some data
+    size = bsonObject.objsize();
+        //recreate bson builder for next fill
+    return bsonObject.objdata();
+}
+
 //return the json data
 SerializationBuffer* CDataWrapper::getJSONData() {
     //finalize the bson object
diff --git a/chaos/common/data/CDataWrapper.h b/chaos/common/data/CDataWrapper.h
index c2399fb0e..3af2d98f4 100644
--- a/chaos/common/data/CDataWrapper.h
+++ b/chaos/common/data/CDataWrapper.h
@@ -1,6 +1,6 @@
 /*
  *	CDataWrapper.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -166,7 +166,9 @@ namespace chaos {
 				
 				//return the bson data
 				SerializationBuffer* getBSONData();
-				
+
+                const char* getBSONRawData(int& size);
+
 				//return the json data
 				SerializationBuffer* getJSONData();
 				
diff --git a/chaos/common/data/CUSchemaDB.cpp b/chaos/common/data/CUSchemaDB.cpp
index 1258fe320..ee4a32c8a 100644
--- a/chaos/common/data/CUSchemaDB.cpp
+++ b/chaos/common/data/CUSchemaDB.cpp
@@ -1,6 +1,6 @@
 /*
  *	CUSchemaDB.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/CUSchemaDB.h b/chaos/common/data/CUSchemaDB.h
index 81075b82e..2b102a971 100644
--- a/chaos/common/data/CUSchemaDB.h
+++ b/chaos/common/data/CUSchemaDB.h
@@ -1,6 +1,6 @@
 /*
  *	CUSchemaDB.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/DatasetDB.cpp b/chaos/common/data/DatasetDB.cpp
index 225557c7f..bcb87fe87 100644
--- a/chaos/common/data/DatasetDB.cpp
+++ b/chaos/common/data/DatasetDB.cpp
@@ -1,6 +1,6 @@
 /*
  *	DatasetDB.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/DatasetDB.h b/chaos/common/data/DatasetDB.h
index 2468afd48..8605b4bff 100644
--- a/chaos/common/data/DatasetDB.h
+++ b/chaos/common/data/DatasetDB.h
@@ -1,6 +1,6 @@
 /*
  *	DatasetDB.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/DataBroker.cpp b/chaos/common/data/broker/DataBroker.cpp
index 33a953e3e..27dd27f92 100644
--- a/chaos/common/data/broker/DataBroker.cpp
+++ b/chaos/common/data/broker/DataBroker.cpp
@@ -1,6 +1,6 @@
 /*
  *	DataBroker.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/DataBroker.h b/chaos/common/data/broker/DataBroker.h
index a744c131d..2ea1eff0c 100644
--- a/chaos/common/data/broker/DataBroker.h
+++ b/chaos/common/data/broker/DataBroker.h
@@ -1,6 +1,6 @@
 /*
  *	DataBroker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/publisher/PublisherDataService.cpp b/chaos/common/data/broker/publisher/PublisherDataService.cpp
index 7d4e49a69..163a9d27c 100644
--- a/chaos/common/data/broker/publisher/PublisherDataService.cpp
+++ b/chaos/common/data/broker/publisher/PublisherDataService.cpp
@@ -1,6 +1,6 @@
 /*
  *	PublishDataService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/publisher/PublisherDataService.h b/chaos/common/data/broker/publisher/PublisherDataService.h
index 28b2b52b6..0dba9de73 100644
--- a/chaos/common/data/broker/publisher/PublisherDataService.h
+++ b/chaos/common/data/broker/publisher/PublisherDataService.h
@@ -1,6 +1,6 @@
 /*
  *	PublisherDataService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/reader/ReaderDataService.cpp b/chaos/common/data/broker/reader/ReaderDataService.cpp
index 457a628f0..faa977f7d 100644
--- a/chaos/common/data/broker/reader/ReaderDataService.cpp
+++ b/chaos/common/data/broker/reader/ReaderDataService.cpp
@@ -1,6 +1,6 @@
 /*
  *	ReaderDataService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/broker/reader/ReaderDataService.h b/chaos/common/data/broker/reader/ReaderDataService.h
index 54c5e1869..1317eb812 100644
--- a/chaos/common/data/broker/reader/ReaderDataService.h
+++ b/chaos/common/data/broker/reader/ReaderDataService.h
@@ -1,6 +1,6 @@
 /*
  *	ReaderDataService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/cache/FastHash.cpp b/chaos/common/data/cache/FastHash.cpp
index 8c60777d5..03d8e3a26 100644
--- a/chaos/common/data/cache/FastHash.cpp
+++ b/chaos/common/data/cache/FastHash.cpp
@@ -1,6 +1,6 @@
 /*
  *	FastHash.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Modified by Bisegni Claudio.
  *
  * The hash function used here is by Bob Jenkins, 1996:
diff --git a/chaos/common/data/cache/FastHash.h b/chaos/common/data/cache/FastHash.h
index 83f8b682e..88575a6cd 100644
--- a/chaos/common/data/cache/FastHash.h
+++ b/chaos/common/data/cache/FastHash.h
@@ -1,6 +1,6 @@
 /*
  *	FastHash.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Modified by Bisegni Claudio.
  *
  * The hash function used here is by Bob Jenkins, 1996:
diff --git a/chaos/common/data/cache/KeyGroupCache.cpp b/chaos/common/data/cache/KeyGroupCache.cpp
index c17f67917..dadf87660 100644
--- a/chaos/common/data/cache/KeyGroupCache.cpp
+++ b/chaos/common/data/cache/KeyGroupCache.cpp
@@ -1,6 +1,6 @@
 /*
  *	KeyGroupCache.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/cache/KeyGroupCache.h b/chaos/common/data/cache/KeyGroupCache.h
index 1f0893fbd..ca5e538d9 100644
--- a/chaos/common/data/cache/KeyGroupCache.h
+++ b/chaos/common/data/cache/KeyGroupCache.h
@@ -1,6 +1,6 @@
 /*
  *	KeyGroupCache.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/cache/LFDataCache.cpp b/chaos/common/data/cache/LFDataCache.cpp
index bd89daa00..d97424ab1 100644
--- a/chaos/common/data/cache/LFDataCache.cpp
+++ b/chaos/common/data/cache/LFDataCache.cpp
@@ -1,6 +1,6 @@
 /*
  *	LFDataCache.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/cache/LFDataCache.h b/chaos/common/data/cache/LFDataCache.h
index a5db81757..ffda5356a 100644
--- a/chaos/common/data/cache/LFDataCache.h
+++ b/chaos/common/data/cache/LFDataCache.h
@@ -1,6 +1,6 @@
 /*
  *	LFDataCache.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity/Entity.cpp b/chaos/common/data/entity/Entity.cpp
index 1fb98dd0f..d003609d8 100644
--- a/chaos/common/data/entity/Entity.cpp
+++ b/chaos/common/data/entity/Entity.cpp
@@ -1,6 +1,6 @@
 /*
  *	Entity.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity/Entity.h b/chaos/common/data/entity/Entity.h
index 3f24de389..cc63bd8cf 100644
--- a/chaos/common/data/entity/Entity.h
+++ b/chaos/common/data/entity/Entity.h
@@ -1,6 +1,6 @@
 /*
  *	Entity.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity/Record.h b/chaos/common/data/entity/Record.h
index 4f3f0e28f..f71ce2f4b 100644
--- a/chaos/common/data/entity/Record.h
+++ b/chaos/common/data/entity/Record.h
@@ -1,6 +1,6 @@
 /*
  *	Record.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity_db/EntityDB.cpp b/chaos/common/data/entity_db/EntityDB.cpp
index 6bf5d6417..f481cac89 100644
--- a/chaos/common/data/entity_db/EntityDB.cpp
+++ b/chaos/common/data/entity_db/EntityDB.cpp
@@ -1,6 +1,6 @@
 /*
  *	EntityDB.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity_db/EntityDB.h b/chaos/common/data/entity_db/EntityDB.h
index 7a3b4dbf9..0fecd2433 100644
--- a/chaos/common/data/entity_db/EntityDB.h
+++ b/chaos/common/data/entity_db/EntityDB.h
@@ -1,6 +1,6 @@
 /*
  *	EntityDB.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.cpp b/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.cpp
index 7c6bf4f79..073f780e8 100644
--- a/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.cpp
+++ b/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.cpp
@@ -1,6 +1,6 @@
 /*
  *	SQLiteEntityDB.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.h b/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.h
index 32ffdc110..fd1bcd62c 100644
--- a/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.h
+++ b/chaos/common/data/entity_db/sqlite_impl/SQLiteEntityDB.h
@@ -1,6 +1,6 @@
 /*
  *	SQLiteEntityDB.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIO.h b/chaos/common/direct_io/DirectIO.h
index 4a1861642..b24d05479 100644
--- a/chaos/common/direct_io/DirectIO.h
+++ b/chaos/common/direct_io/DirectIO.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIO.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOClient.cpp b/chaos/common/direct_io/DirectIOClient.cpp
index 995757288..55c24e8d8 100644
--- a/chaos/common/direct_io/DirectIOClient.cpp
+++ b/chaos/common/direct_io/DirectIOClient.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOClient.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOClient.h b/chaos/common/direct_io/DirectIOClient.h
index 83fe41631..b54c7ce77 100644
--- a/chaos/common/direct_io/DirectIOClient.h
+++ b/chaos/common/direct_io/DirectIOClient.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOClient.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOClientConnection.cpp b/chaos/common/direct_io/DirectIOClientConnection.cpp
index b6b061649..f428147df 100644
--- a/chaos/common/direct_io/DirectIOClientConnection.cpp
+++ b/chaos/common/direct_io/DirectIOClientConnection.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOClientConnection.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOClientConnection.h b/chaos/common/direct_io/DirectIOClientConnection.h
index 335301bd5..d7b4334ea 100644
--- a/chaos/common/direct_io/DirectIOClientConnection.h
+++ b/chaos/common/direct_io/DirectIOClientConnection.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOClientConnection.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIODataPack.h b/chaos/common/direct_io/DirectIODataPack.h
index 9732f58c9..fc6c92892 100644
--- a/chaos/common/direct_io/DirectIODataPack.h
+++ b/chaos/common/direct_io/DirectIODataPack.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIODataPack.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIODispatcher.cpp b/chaos/common/direct_io/DirectIODispatcher.cpp
index 635a5ae6a..86391a6ea 100644
--- a/chaos/common/direct_io/DirectIODispatcher.cpp
+++ b/chaos/common/direct_io/DirectIODispatcher.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractDirectIODispatcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIODispatcher.h b/chaos/common/direct_io/DirectIODispatcher.h
index 31b3ae1e0..056e08fd9 100644
--- a/chaos/common/direct_io/DirectIODispatcher.h
+++ b/chaos/common/direct_io/DirectIODispatcher.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractDirectIODispatcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOEndpointHandler.h b/chaos/common/direct_io/DirectIOEndpointHandler.h
index 82eb596eb..e052d96c4 100644
--- a/chaos/common/direct_io/DirectIOEndpointHandler.h
+++ b/chaos/common/direct_io/DirectIOEndpointHandler.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOEndpointHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOForwarder.h b/chaos/common/direct_io/DirectIOForwarder.h
index 853bd7044..e698d9e75 100644
--- a/chaos/common/direct_io/DirectIOForwarder.h
+++ b/chaos/common/direct_io/DirectIOForwarder.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOForwarder.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOHandler.h b/chaos/common/direct_io/DirectIOHandler.h
index e6623031e..7936289aa 100644
--- a/chaos/common/direct_io/DirectIOHandler.h
+++ b/chaos/common/direct_io/DirectIOHandler.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOPerformanceSession.h b/chaos/common/direct_io/DirectIOPerformanceSession.h
index 8e76894b2..635464369 100644
--- a/chaos/common/direct_io/DirectIOPerformanceSession.h
+++ b/chaos/common/direct_io/DirectIOPerformanceSession.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceSession.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOServer.cpp b/chaos/common/direct_io/DirectIOServer.cpp
index f35e9dc9a..2afe6e09e 100644
--- a/chaos/common/direct_io/DirectIOServer.cpp
+++ b/chaos/common/direct_io/DirectIOServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOServer.h b/chaos/common/direct_io/DirectIOServer.h
index 57887a96b..feb57a56d 100644
--- a/chaos/common/direct_io/DirectIOServer.h
+++ b/chaos/common/direct_io/DirectIOServer.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOServerEndpoint.cpp b/chaos/common/direct_io/DirectIOServerEndpoint.cpp
index f44d0998c..b697211c0 100644
--- a/chaos/common/direct_io/DirectIOServerEndpoint.cpp
+++ b/chaos/common/direct_io/DirectIOServerEndpoint.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOServerEndpoint.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOServerEndpoint.h b/chaos/common/direct_io/DirectIOServerEndpoint.h
index 90bc017c7..41ac84272 100644
--- a/chaos/common/direct_io/DirectIOServerEndpoint.h
+++ b/chaos/common/direct_io/DirectIOServerEndpoint.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOServerEndpoint.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOServerPublicInterface.h b/chaos/common/direct_io/DirectIOServerPublicInterface.h
index 13735edc6..912d06367 100644
--- a/chaos/common/direct_io/DirectIOServerPublicInterface.h
+++ b/chaos/common/direct_io/DirectIOServerPublicInterface.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOServerPublicInterface.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOTypes.h b/chaos/common/direct_io/DirectIOTypes.h
index 7bc100f9d..9648ad83a 100644
--- a/chaos/common/direct_io/DirectIOTypes.h
+++ b/chaos/common/direct_io/DirectIOTypes.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOTypes.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOURLManagment.cpp b/chaos/common/direct_io/DirectIOURLManagment.cpp
index 0d7f691b1..0cea6c2d3 100644
--- a/chaos/common/direct_io/DirectIOURLManagment.cpp
+++ b/chaos/common/direct_io/DirectIOURLManagment.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOURLManagment.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/DirectIOURLManagment.h b/chaos/common/direct_io/DirectIOURLManagment.h
index af52dbd16..e6ebea01f 100644
--- a/chaos/common/direct_io/DirectIOURLManagment.h
+++ b/chaos/common/direct_io/DirectIOURLManagment.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOURLManagment.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOChannelGlobal.h b/chaos/common/direct_io/channel/DirectIOChannelGlobal.h
index 4bfcb28dc..e815c5e20 100644
--- a/chaos/common/direct_io/channel/DirectIOChannelGlobal.h
+++ b/chaos/common/direct_io/channel/DirectIOChannelGlobal.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOEndpointHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIODeviceClientChannel.cpp b/chaos/common/direct_io/channel/DirectIODeviceClientChannel.cpp
index 8bbe8fda5..5e34b44c7 100644
--- a/chaos/common/direct_io/channel/DirectIODeviceClientChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIODeviceClientChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIODeviceDatasetClientChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIODeviceClientChannel.h b/chaos/common/direct_io/channel/DirectIODeviceClientChannel.h
index 9b8567608..accfbbcb8 100644
--- a/chaos/common/direct_io/channel/DirectIODeviceClientChannel.h
+++ b/chaos/common/direct_io/channel/DirectIODeviceClientChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIODeviceClientChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIODeviceServerChannel.cpp b/chaos/common/direct_io/channel/DirectIODeviceServerChannel.cpp
index 6a1836ab8..6d5d9eaf0 100644
--- a/chaos/common/direct_io/channel/DirectIODeviceServerChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIODeviceServerChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIODeviceServerChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIODeviceServerChannel.h b/chaos/common/direct_io/channel/DirectIODeviceServerChannel.h
index aee86a8ca..69a8ca99c 100644
--- a/chaos/common/direct_io/channel/DirectIODeviceServerChannel.h
+++ b/chaos/common/direct_io/channel/DirectIODeviceServerChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIODeviceServerChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.cpp b/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.cpp
index 8ecf79094..b7485c5e1 100644
--- a/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceClientChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.h b/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.h
index a3580aae3..e557ec7cd 100644
--- a/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOPerformanceClientChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceClientChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.cpp b/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.cpp
index 42387c598..7b61a7eee 100644
--- a/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceServerChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.h b/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.h
index 5dd959a0c..b4490d261 100644
--- a/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOPerformanceServerChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceServerChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.cpp b/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.cpp
index 074172735..5fb765779 100644
--- a/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOSystemAPIClientChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.h b/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.h
index 4d2884add..210151920 100644
--- a/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOSystemAPIClientChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOSystemAPIClientChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.cpp b/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.cpp
index 97ae6551a..e912bd193 100644
--- a/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOSystemAPIServerChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.h b/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.h
index ea293c09f..a927966a9 100644
--- a/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOSystemAPIServerChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOPerformanceServerChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualChannel.cpp b/chaos/common/direct_io/channel/DirectIOVirtualChannel.cpp
index 6cf5d0e26..703eb979f 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOVirtualChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualChannel.h b/chaos/common/direct_io/channel/DirectIOVirtualChannel.h
index 8e4fa99fa..c95ba6222 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOVirtualChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualChannel
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.cpp b/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.cpp
index c9c80b617..445af9a20 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.h b/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.h
index 7ade82aac..c7ce538a3 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOVirtualClientChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.cpp b/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.cpp
index 066696090..cf5390ea8 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.cpp
+++ b/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualServerChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.h b/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.h
index 0df01af42..7a1596707 100644
--- a/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.h
+++ b/chaos/common/direct_io/channel/DirectIOVirtualServerChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DirectIOVirtualServerChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQDirectIOClient.cpp b/chaos/common/direct_io/impl/ZMQDirectIOClient.cpp
index cc311b0f9..0586c3c4f 100644
--- a/chaos/common/direct_io/impl/ZMQDirectIOClient.cpp
+++ b/chaos/common/direct_io/impl/ZMQDirectIOClient.cpp
@@ -1,6 +1,6 @@
 /*
  *	ZMQDirectIOClinet.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQDirectIOClient.h b/chaos/common/direct_io/impl/ZMQDirectIOClient.h
index 6f3b1d87e..6b67ab963 100644
--- a/chaos/common/direct_io/impl/ZMQDirectIOClient.h
+++ b/chaos/common/direct_io/impl/ZMQDirectIOClient.h
@@ -1,7 +1,7 @@
 
 /*
  *	ZMQDirectIOClient.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQDirectIOClientConnection.h b/chaos/common/direct_io/impl/ZMQDirectIOClientConnection.h
index f97dc2c15..28b26a23f 100644
--- a/chaos/common/direct_io/impl/ZMQDirectIOClientConnection.h
+++ b/chaos/common/direct_io/impl/ZMQDirectIOClientConnection.h
@@ -1,6 +1,6 @@
 /*
  *	ZMQDirectIOClientConnection.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQDirectIOServer.cpp b/chaos/common/direct_io/impl/ZMQDirectIOServer.cpp
index b261f51c7..57180198b 100644
--- a/chaos/common/direct_io/impl/ZMQDirectIOServer.cpp
+++ b/chaos/common/direct_io/impl/ZMQDirectIOServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	ZMQDirectIOServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQDirectIOServer.h b/chaos/common/direct_io/impl/ZMQDirectIOServer.h
index 55b7b04e8..caf36d04d 100644
--- a/chaos/common/direct_io/impl/ZMQDirectIOServer.h
+++ b/chaos/common/direct_io/impl/ZMQDirectIOServer.h
@@ -1,6 +1,6 @@
 /*
  *	ZMQDirectIOServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQSocketFeeder.cpp b/chaos/common/direct_io/impl/ZMQSocketFeeder.cpp
index 7119982b1..d14b0323b 100644
--- a/chaos/common/direct_io/impl/ZMQSocketFeeder.cpp
+++ b/chaos/common/direct_io/impl/ZMQSocketFeeder.cpp
@@ -1,6 +1,6 @@
 /*
  *	ZMQSocketFeeder.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/direct_io/impl/ZMQSocketFeeder.h b/chaos/common/direct_io/impl/ZMQSocketFeeder.h
index 44efa899d..7110557b1 100644
--- a/chaos/common/direct_io/impl/ZMQSocketFeeder.h
+++ b/chaos/common/direct_io/impl/ZMQSocketFeeder.h
@@ -1,6 +1,6 @@
 /*
  *	ZMQSocketFeeder.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/AbstractCommandDispatcher.cpp b/chaos/common/dispatcher/AbstractCommandDispatcher.cpp
index 29f570c49..c76a77f49 100644
--- a/chaos/common/dispatcher/AbstractCommandDispatcher.cpp
+++ b/chaos/common/dispatcher/AbstractCommandDispatcher.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractCommandDispatcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/AbstractCommandDispatcher.h b/chaos/common/dispatcher/AbstractCommandDispatcher.h
index eae967738..bd7be6c1a 100644
--- a/chaos/common/dispatcher/AbstractCommandDispatcher.h
+++ b/chaos/common/dispatcher/AbstractCommandDispatcher.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractCommandDispatcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/ChaosDispatcher.h b/chaos/common/dispatcher/ChaosDispatcher.h
index bfe67e111..1e5968bef 100644
--- a/chaos/common/dispatcher/ChaosDispatcher.h
+++ b/chaos/common/dispatcher/ChaosDispatcher.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosDispatcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DefaultCommandDispatcher.cpp b/chaos/common/dispatcher/DefaultCommandDispatcher.cpp
index 23c39ab33..2ab2a4385 100644
--- a/chaos/common/dispatcher/DefaultCommandDispatcher.cpp
+++ b/chaos/common/dispatcher/DefaultCommandDispatcher.cpp
@@ -1,6 +1,6 @@
 /*
  *	DefaultCommandDispatcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DefaultCommandDispatcher.h b/chaos/common/dispatcher/DefaultCommandDispatcher.h
index 65e34e1ec..920d30034 100644
--- a/chaos/common/dispatcher/DefaultCommandDispatcher.h
+++ b/chaos/common/dispatcher/DefaultCommandDispatcher.h
@@ -1,6 +1,6 @@
 /*	
  *	DefaultCommandDispatcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DefaultEventDispatcher.cpp b/chaos/common/dispatcher/DefaultEventDispatcher.cpp
index 22d9fe5c0..df3e31b08 100644
--- a/chaos/common/dispatcher/DefaultEventDispatcher.cpp
+++ b/chaos/common/dispatcher/DefaultEventDispatcher.cpp
@@ -1,6 +1,6 @@
 /*
  *	DefaultEventDispatcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DefaultEventDispatcher.h b/chaos/common/dispatcher/DefaultEventDispatcher.h
index 42ff5e302..c1f4ff32f 100644
--- a/chaos/common/dispatcher/DefaultEventDispatcher.h
+++ b/chaos/common/dispatcher/DefaultEventDispatcher.h
@@ -1,6 +1,6 @@
 /*
  *	DefaultEventDispatcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DomainActionsScheduler.cpp b/chaos/common/dispatcher/DomainActionsScheduler.cpp
index ceaa281d8..8048c3ca7 100644
--- a/chaos/common/dispatcher/DomainActionsScheduler.cpp
+++ b/chaos/common/dispatcher/DomainActionsScheduler.cpp
@@ -1,6 +1,6 @@
 /*
  *	DomainActionsScheduler.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/dispatcher/DomainActionsScheduler.h b/chaos/common/dispatcher/DomainActionsScheduler.h
index 97c112552..07471e12b 100644
--- a/chaos/common/dispatcher/DomainActionsScheduler.h
+++ b/chaos/common/dispatcher/DomainActionsScheduler.h
@@ -1,6 +1,6 @@
 /*	
  *	DomainActionsScheduler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/endian.h b/chaos/common/endian.h
index 6723ad045..e2caf5e4e 100644
--- a/chaos/common/endian.h
+++ b/chaos/common/endian.h
@@ -1,6 +1,6 @@
 /*
  *	endian.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/AsioEventHandler.cpp b/chaos/common/event/AsioEventHandler.cpp
index afcf81ff7..5832bff97 100644
--- a/chaos/common/event/AsioEventHandler.cpp
+++ b/chaos/common/event/AsioEventHandler.cpp
@@ -1,6 +1,6 @@
 /*
  *	AsioEventHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/AsioEventHandler.h b/chaos/common/event/AsioEventHandler.h
index 611d51405..50761a2f6 100644
--- a/chaos/common/event/AsioEventHandler.h
+++ b/chaos/common/event/AsioEventHandler.h
@@ -1,6 +1,6 @@
 /*
  *	AsioEventHandler.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/AsioImplEventServer.cpp b/chaos/common/event/AsioImplEventServer.cpp
index 8df68e20c..598f6043e 100644
--- a/chaos/common/event/AsioImplEventServer.cpp
+++ b/chaos/common/event/AsioImplEventServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	AsioImplEventServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/AsioImplEventServer.h b/chaos/common/event/AsioImplEventServer.h
index 2523ea071..e6cf81a1a 100644
--- a/chaos/common/event/AsioImplEventServer.h
+++ b/chaos/common/event/AsioImplEventServer.h
@@ -1,6 +1,6 @@
 /*
  *	AsioImplEventServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -38,7 +38,7 @@ namespace chaos {
         const short multicast_port = 30001;
         class AsioEventHandler;
         
-        //! Asio impleentation for the !CHOAS event server
+        //! Asio impleentation for the !CHAOS event server
         /*!
          
          */
diff --git a/chaos/common/event/EventForwarder.h b/chaos/common/event/EventForwarder.h
index 7dd435dbe..66d142b64 100644
--- a/chaos/common/event/EventForwarder.h
+++ b/chaos/common/event/EventForwarder.h
@@ -1,6 +1,6 @@
 /*
  *	EventForwarding.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/EventServer.cpp b/chaos/common/event/EventServer.cpp
index cb5e01a98..953a6d500 100644
--- a/chaos/common/event/EventServer.cpp
+++ b/chaos/common/event/EventServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	EventServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/EventServer.h b/chaos/common/event/EventServer.h
index fe50307c6..3359e92f2 100644
--- a/chaos/common/event/EventServer.h
+++ b/chaos/common/event/EventServer.h
@@ -1,6 +1,6 @@
 /*
  *	EventServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/evt_desc/AlertEventDescriptor.cpp b/chaos/common/event/evt_desc/AlertEventDescriptor.cpp
index 3b086ac36..a942ce72a 100644
--- a/chaos/common/event/evt_desc/AlertEventDescriptor.cpp
+++ b/chaos/common/event/evt_desc/AlertEventDescriptor.cpp
@@ -1,6 +1,6 @@
 /*
  *	AlertEventDescriptor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/evt_desc/AlertEventDescriptor.h b/chaos/common/event/evt_desc/AlertEventDescriptor.h
index b0e48535c..9bfe91b5c 100644
--- a/chaos/common/event/evt_desc/AlertEventDescriptor.h
+++ b/chaos/common/event/evt_desc/AlertEventDescriptor.h
@@ -1,6 +1,6 @@
 /*
  *	AlertEventDescriptor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/evt_desc/EventDescriptor.cpp b/chaos/common/event/evt_desc/EventDescriptor.cpp
index 7d5a4c271..fdac22a93 100644
--- a/chaos/common/event/evt_desc/EventDescriptor.cpp
+++ b/chaos/common/event/evt_desc/EventDescriptor.cpp
@@ -1,6 +1,6 @@
 /*
  *	EventDescriptor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/event/evt_desc/EventDescriptor.h b/chaos/common/event/evt_desc/EventDescriptor.h
index b3efaf71d..76e85e4f4 100644
--- a/chaos/common/event/evt_desc/EventDescriptor.h
+++ b/chaos/common/event/evt_desc/EventDescriptor.h
@@ -1,6 +1,6 @@
 /*
  *	EventDescriptor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/exception/CException.h b/chaos/common/exception/CException.h
index 5d142d432..ffeece030 100644
--- a/chaos/common/exception/CException.h
+++ b/chaos/common/exception/CException.h
@@ -1,6 +1,6 @@
 /*
  *	ControlException.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/fsm/FinalStateMachine.cpp b/chaos/common/fsm/FinalStateMachine.cpp
deleted file mode 100644
index 16e260ef4..000000000
--- a/chaos/common/fsm/FinalStateMachine.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-//  FinalStateMachine.cpp
-//  CHAOSFramework
-//
-//  Created by Claudio Bisegni on 7/29/13.
-//  Copyright (c) 2013 INFN. All rights reserved.
-//
-
-#include "FinalStateMachine.h"
diff --git a/chaos/common/fsm/FinalStateMachine.h b/chaos/common/fsm/FinalStateMachine.h
deleted file mode 100644
index 27f3f93e8..000000000
--- a/chaos/common/fsm/FinalStateMachine.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-//  FinalStateMachine.h
-//  CHAOSFramework
-//
-//  Created by Claudio Bisegni on 7/29/13.
-//  Copyright (c) 2013 INFN. All rights reserved.
-//
-
-#ifndef __CHAOSFramework__FinalStateMachine__
-#define __CHAOSFramework__FinalStateMachine__
-
-// back-end
-#include <boost/msm/back/state_machine.hpp>
-//front-end
-#include <boost/msm/front/state_machine_def.hpp>
-#include <boost/msm/front/functor_row.hpp>
-#include <boost/msm/front/euml/common.hpp>
-// for And_ operator
-#include <boost/msm/front/euml/operator.hpp>
-namespace chaos {
-    
-    namespace fsm {
-        BOOST_MSM_EUML_EVENT(play)
-        
-        // front-end: define the FSM structure
-        struct id_states_machine : public boost::msm::front::state_machine_def<id_states_machine> {
-            
-            
-            // The list of FSM states
-            struct Deinitilized : public boost::msm::front::state<>
-            {
-                // every (optional) entry/exit methods get the event passed.
-                template <class Event,class FSM>
-                void on_entry(Event const&,FSM& ) {std::cout << "entering: Deinitilized" << std::endl;}
-                template <class Event,class FSM>
-                void on_exit(Event const&,FSM& ) {std::cout << "leaving: Deinitilized" << std::endl;}
-                struct internal_guard_fct
-                {
-                    template <class EVT,class FSM,class SourceState,class TargetState>
-                    bool operator()(EVT const& evt ,FSM&,SourceState& ,TargetState& )
-                    {
-                        std::cout << "Deinitilized::internal_transition_table guard\n";
-                        return false;
-                    }
-                };
-                struct internal_action_fct
-                {
-                    template <class EVT,class FSM,class SourceState,class TargetState>
-                    void operator()(EVT const& ,FSM& ,SourceState& ,TargetState& )
-                    {
-                        std::cout << "Deinitilized::internal_transition_table action" << std::endl;
-                    }
-                };
-                // Transition table for Empty
-                struct internal_transition_table : boost::mpl::vector< Internal < EventType::initialize, internal_action_fct ,internal_guard_fct> > {};
-            };
-            
-            struct Initialized : public boost::msm::front::state<>
-            {
-                template <class Event,class FSM>
-                void on_entry(Event const& ,FSM&) {std::cout << "entering: Initialized" << std::endl;}
-                template <class Event,class FSM>
-                void on_exit(Event const&,FSM& ) {std::cout << "leaving: Initialized" << std::endl;}
-            };
-            
-            // the initial state of the player SM. Must be defined
-            typedef Deinitilized initial_state;
-            
-            typedef boost::msm::front::Row <  Deinitilized   ,  EventType::initialize  , Initialized, boost::msm::front::none , boost::msm::front::none > deinit_init_row;
-            typedef boost::msm::front::Row <  Initialized   ,  EventType::deinitialize  , Deinitilized, boost::msm::front::none , boost::msm::front::none > init_deinit_row;
-            
-            // Transition table for initialization services
-            struct transition_table : boost::mpl::vector<
-            deinit_init_row,
-            init_deinit_row > {};
-        };
-    }
-}
-
-#endif /* defined(__CHAOSFramework__FinalStateMachine__) */
diff --git a/chaos/common/general/Configurable.h b/chaos/common/general/Configurable.h
index 392b7601b..b30f2a59c 100644
--- a/chaos/common/general/Configurable.h
+++ b/chaos/common/general/Configurable.h
@@ -1,6 +1,6 @@
 /*	
  *	Configurable.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/global.h b/chaos/common/global.h
index a505c7e5f..852d8ef43 100644
--- a/chaos/common/global.h
+++ b/chaos/common/global.h
@@ -1,6 +1,6 @@
 /*	
  *	global.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -24,7 +24,7 @@
  *
  * \section intro_sec Introduction
  *
- * !CHOAS is a new idea on Control System software architecture, more information cam be found
+ * !CHAOS is a new idea on Control System software architecture, more information cam be found
  * on http://chaos.infn.it/
  *
  * \section install_sec Installation
diff --git a/chaos/common/io/IODataDriver.h b/chaos/common/io/IODataDriver.h
index a262623d4..57dd5f578 100644
--- a/chaos/common/io/IODataDriver.h
+++ b/chaos/common/io/IODataDriver.h
@@ -1,6 +1,6 @@
 /*
  *	IODataDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/io/IODirectIODriver.cpp b/chaos/common/io/IODirectIODriver.cpp
index 4ec6c33ab..e5b02b8e1 100644
--- a/chaos/common/io/IODirectIODriver.cpp
+++ b/chaos/common/io/IODirectIODriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	IODirectIODriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/io/IODirectIODriver.h b/chaos/common/io/IODirectIODriver.h
index 2d433737e..bacda7fbb 100644
--- a/chaos/common/io/IODirectIODriver.h
+++ b/chaos/common/io/IODirectIODriver.h
@@ -1,6 +1,6 @@
 /*
  *	IODirectIODriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/io/IOMemcachedIODriver.cpp b/chaos/common/io/IOMemcachedIODriver.cpp
index b3056ffd2..c3a240ee9 100644
--- a/chaos/common/io/IOMemcachedIODriver.cpp
+++ b/chaos/common/io/IOMemcachedIODriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	IOMemcachedIODriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/io/IOMemcachedIODriver.h b/chaos/common/io/IOMemcachedIODriver.h
index 5daeb0cec..73246e063 100644
--- a/chaos/common/io/IOMemcachedIODriver.h
+++ b/chaos/common/io/IOMemcachedIODriver.h
@@ -1,6 +1,6 @@
 /*
  *	IOMemcachedIODriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/memory/ManagedMemory.cpp b/chaos/common/memory/ManagedMemory.cpp
index 3a61aad17..913f5a9f0 100644
--- a/chaos/common/memory/ManagedMemory.cpp
+++ b/chaos/common/memory/ManagedMemory.cpp
@@ -1,6 +1,6 @@
 /*
  *	ManagedMemory.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Assembled by Bisegni Claudio getting the code from http://www.memcached.org
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/memory/ManagedMemory.h b/chaos/common/memory/ManagedMemory.h
index eaec5cefa..2bbf2ca3d 100644
--- a/chaos/common/memory/ManagedMemory.h
+++ b/chaos/common/memory/ManagedMemory.h
@@ -1,6 +1,6 @@
 /*
  *	ManagedMemory.h
- *	!CHOAS
+ *	!CHAOS
  *	Assembled by Bisegni Claudio getting the code from http://www.memcached.org
  *  Update by Bisegni Claudio.
  *
diff --git a/chaos/common/message/DeviceMessageChannel.cpp b/chaos/common/message/DeviceMessageChannel.cpp
index a20754e0f..ff3e68cbc 100644
--- a/chaos/common/message/DeviceMessageChannel.cpp
+++ b/chaos/common/message/DeviceMessageChannel.cpp
@@ -1,6 +1,6 @@
 /*	
  *	DeviceMessageChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/DeviceMessageChannel.h b/chaos/common/message/DeviceMessageChannel.h
index 43bfa117f..d2a54b1e3 100644
--- a/chaos/common/message/DeviceMessageChannel.h
+++ b/chaos/common/message/DeviceMessageChannel.h
@@ -1,6 +1,6 @@
 /*
  *	DeviceMessageChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/MDSMessageChannel.cpp b/chaos/common/message/MDSMessageChannel.cpp
index bfeae75e6..712373fa6 100644
--- a/chaos/common/message/MDSMessageChannel.cpp
+++ b/chaos/common/message/MDSMessageChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	MDSMessageChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/MDSMessageChannel.h b/chaos/common/message/MDSMessageChannel.h
index 8d9d7fcf3..e66ab44b8 100644
--- a/chaos/common/message/MDSMessageChannel.h
+++ b/chaos/common/message/MDSMessageChannel.h
@@ -1,6 +1,6 @@
 /*
  *	MDSMessageChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/MessageChannel.cpp b/chaos/common/message/MessageChannel.cpp
index b0c9d702a..b9297616d 100644
--- a/chaos/common/message/MessageChannel.cpp
+++ b/chaos/common/message/MessageChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	MessageChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -77,7 +77,7 @@ CDataWrapper *MessageChannel::response(CDataWrapper *response_data, bool& detach
     uint32_t request_id = response_data->getInt32Value(RpcActionDefinitionKey::CS_CMDM_MESSAGE_ID);
     try {
         //lock the map
-        boost::shared_lock< boost::shared_mutex > lock(mutext_answer_managment);
+         boost::lock_guard<boost::mutex> lock(mutext_answer_managment);
         
         DEBUG_CODE(MCDBG_ << "Received answer with id:" << request_id;)
         
@@ -88,13 +88,10 @@ CDataWrapper *MessageChannel::response(CDataWrapper *response_data, bool& detach
             DEBUG_CODE(MCDBG_ << "We have promises for id:" << request_id);
             
             //set the valu ein promises
-            p_iter->second->set_value(response_data);
+            p_iter->second->set_value(FuturePromiseData(response_data));
             
             //delete the promises after have been set the data
             map_request_id_promises.erase(p_iter);
-            
-            //we have the promises
-            lock.unlock();
         } else {
             DEBUG_CODE(MCDBG_ << "No promises found for id:" << request_id;)
         }
@@ -201,15 +198,15 @@ std::auto_ptr<MessageRequestFuture> MessageChannel::sendRequestWithFuture(const
     data_pack->addStringValue(RpcActionDefinitionKey::CS_CMDM_ANSWER_DOMAIN, channel_reponse_domain);
     data_pack->addStringValue(RpcActionDefinitionKey::CS_CMDM_ANSWER_ACTION, "response");
     //prepare the promises and future
-    boost::shared_ptr<boost::promise<common::data::CDataWrapper*> > promises_ptr(new boost::promise<common::data::CDataWrapper*>());
+    boost::shared_ptr<MessageFuturePromise> promise(new MessageFuturePromise());
     
     //lock the map
-    boost::shared_lock< boost::shared_mutex > lock(mutext_answer_managment);
+    boost::lock_guard<boost::mutex> lock(mutext_answer_managment);
     //insert into themap the promises
-    map_request_id_promises.insert(make_pair(current_request_id, promises_ptr));
+    map_request_id_promises.insert(make_pair(current_request_id, promise));
     //get the future
     result.reset(new  MessageRequestFuture(current_request_id,
-                                           promises_ptr->get_future()));
+                                           promise->get_future()));
     //if(async) return result;
     //submit the request
     broker->submiteRequest(remote_host,
diff --git a/chaos/common/message/MessageChannel.h b/chaos/common/message/MessageChannel.h
index 00f83a1e1..50a0d6dec 100644
--- a/chaos/common/message/MessageChannel.h
+++ b/chaos/common/message/MessageChannel.h
@@ -1,6 +1,6 @@
 /*
  *	MessageChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -34,6 +34,7 @@
 #include <chaos/common/network/CNodeNetworkAddress.h>
 #include <chaos/common/network/NetworkBroker.h>
 
+#include <boost/smart_ptr.hpp>
 #include <boost/function.hpp>
 #include <boost/thread.hpp>
 #include <boost/thread/future.hpp>
@@ -68,8 +69,10 @@ if(x->hasKey(RpcActionDefinitionKey::CS_CMDM_ACTION_SUBMISSION_ERROR_DOMAIN)) la
 if(x->hasKey(RpcActionDefinitionKey::CS_CMDM_ACTION_MESSAGE)) x->getCSDataValue(RpcActionDefinitionKey::CS_CMDM_ACTION_MESSAGE);
 
 			/*! \} */
-            typedef map<chaos::common::utility::atomic_int_type, boost::shared_ptr<boost::promise<common::data::CDataWrapper*> > >              MapPromises;
-            typedef map<chaos::common::utility::atomic_int_type, boost::shared_ptr<boost::promise<common::data::CDataWrapper*> > >::iterator    MapPromisesIterator;
+            typedef boost::shared_ptr<common::data::CDataWrapper>                                                       FuturePromiseData;
+            typedef boost::promise< FuturePromiseData >                                                             MessageFuturePromise;
+            typedef map<chaos::common::utility::atomic_int_type, boost::shared_ptr<MessageFuturePromise> >              MapPromises;
+            typedef map<chaos::common::utility::atomic_int_type, boost::shared_ptr<MessageFuturePromise> >::iterator    MapPromisesIterator;
 			//! MessageChannel
 			/*!
 			 This is the basic channel for comunicate with other chaos rpc server. It can be instantiated only by
@@ -89,7 +92,7 @@ if(x->hasKey(RpcActionDefinitionKey::CS_CMDM_ACTION_MESSAGE)) x->getCSDataValue(
                 boost::atomic<uint32_t> channel_request_id_counter;
 
 				//! Mutex for managing the maps manipulation
-				boost::shared_mutex mutext_answer_managment;
+				boost::mutex mutext_answer_managment;
 
                 MapPromises map_request_id_promises;
 
diff --git a/chaos/common/message/MessageRequestFuture.cpp b/chaos/common/message/MessageRequestFuture.cpp
index 4cd8d7f3d..1fd094a50 100644
--- a/chaos/common/message/MessageRequestFuture.cpp
+++ b/chaos/common/message/MessageRequestFuture.cpp
@@ -1,6 +1,6 @@
 /*
  *	MessageRequestFuture.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -19,11 +19,15 @@
  */
 #include <chaos/common/message/MessageRequestFuture.h>
 
+#define MRF_INFO INFO_LOG(MessageRequestFuture)
+#define MRF_DBG DBG_LOG(MessageRequestFuture)
+#define MRF_ERR ERR_LOG(MessageRequestFuture)
+
 using namespace chaos::common::message;
 
-    //!private constructor
+//!private constructor
 MessageRequestFuture::MessageRequestFuture(chaos::common::utility::atomic_int_type _request_id,
-                                           boost::unique_future<chaos::common::data::CDataWrapper*> _future):
+                                           boost::unique_future< boost::shared_ptr<chaos::common::data::CDataWrapper> > _future):
 request_id(_request_id),
 future(_future),
 request_result(NULL),
@@ -31,38 +35,41 @@ error_code(-1),
 error_message(""),
 error_domain(""),
 local_result(false) {
-
+    
 }
-    //!private destructor
+//!private destructor
 MessageRequestFuture::~MessageRequestFuture() {
-
 }
 
 bool MessageRequestFuture::wait(int32_t timeout_in_milliseconds) {
-    if(request_result.get()) {
-        return true;
-    }
-    //! whait for result
-    if(timeout_in_milliseconds >= 0) {
-        future.wait_for(boost::chrono::milliseconds(timeout_in_milliseconds));
-    } else {
-        future.wait();
-    }
-
-    if(future.is_ready() &&
-                future.has_value()) {
-        MRF_PARSE_CDWPTR_RESULT(future.get())
-        return true;
-    } else {
-        return false;
+    try{
+        if(request_result.get()) {
+            return true;
+        }
+        //! whait for result
+        if(timeout_in_milliseconds >= 0) {
+            future.wait_for(boost::chrono::milliseconds(timeout_in_milliseconds));
+        } else {
+            future.wait();
+        }
+        
+        if(future.is_ready() &&
+           future.has_value()) {
+            MRF_PARSE_CDWPTR_RESULT(future.get())
+            return true;
+        } else {
+            return false;
+        }
+    } catch (boost::broken_promise &e) {
+        MRF_ERR << "Broken pormisess error:" << e.what();
     }
 }
 
-    //! try to get the result waiting for a determinate period of time
+//! try to get the result waiting for a determinate period of time
 chaos::common::data::CDataWrapper *MessageRequestFuture::getResult() {
-        //! wait for result
+    //! wait for result
     return request_result.get();
-
+    
 }
 
 chaos::common::data::CDataWrapper *MessageRequestFuture::detachResult() {
diff --git a/chaos/common/message/MessageRequestFuture.h b/chaos/common/message/MessageRequestFuture.h
index 10061bdb6..f5d52ff0a 100644
--- a/chaos/common/message/MessageRequestFuture.h
+++ b/chaos/common/message/MessageRequestFuture.h
@@ -1,6 +1,6 @@
 /*
  *	MessageRequestFuture.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -24,6 +24,7 @@
 #include <chaos/common/data/CDataWrapper.h>
 #include <chaos/common/utility/Atomic.h>
 
+#include <boost/smart_ptr.hpp>
 #include <boost/thread/future.hpp>
 
 #define MRF_PARSE_CDWPTR_RESULT(x) \
@@ -54,9 +55,9 @@ namespace chaos {
                 chaos::common::utility::atomic_int_type request_id;
 
                     //shared future for the answer
-                boost::shared_future<chaos::common::data::CDataWrapper*> future;
+                boost::shared_future< boost::shared_ptr<chaos::common::data::CDataWrapper> > future;
 
-                    //! the result fo the request
+                    //! the result for the request
                 std::auto_ptr<chaos::common::data::CDataWrapper> request_result;
 
                     //!error code
@@ -75,7 +76,7 @@ namespace chaos {
 
                     //!private constructor
                 MessageRequestFuture(chaos::common::utility::atomic_int_type _request_id,
-                                     boost::unique_future<chaos::common::data::CDataWrapper*> _future);
+                                     boost::unique_future< boost::shared_ptr<chaos::common::data::CDataWrapper> > _future);
 
             public:
                 //!private destructor
diff --git a/chaos/common/message/MultiAddressMessageChannel.cpp b/chaos/common/message/MultiAddressMessageChannel.cpp
index dcb4404dd..42e60c2b6 100644
--- a/chaos/common/message/MultiAddressMessageChannel.cpp
+++ b/chaos/common/message/MultiAddressMessageChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	MultiAddressMessageChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -68,6 +68,7 @@ MultiAddressMessageChannel::~MultiAddressMessageChannel() {
 }
 
 void MultiAddressMessageChannel::retryOfflineServer(bool force) {
+    boost::lock_guard<boost::mutex> l(mutex_server_usage);
     uint64_t now = TimingUtil::getTimeStamp();
     if(force||
        ((now - last_retry) > RETRY_DELAY)) {
@@ -194,6 +195,7 @@ std::auto_ptr<MultiAddressMessageRequestFuture> MultiAddressMessageChannel::send
                                                                                                   const std::string& action_name,
                                                                                                   CDataWrapper *request_pack,
                                                                                                   int32_t request_timeout) {
+    retryOfflineServer(true);
     return std::auto_ptr<MultiAddressMessageRequestFuture>(new MultiAddressMessageRequestFuture(this,
                                                                                                 action_domain,
                                                                                                 action_name,
diff --git a/chaos/common/message/MultiAddressMessageChannel.h b/chaos/common/message/MultiAddressMessageChannel.h
index 7e4fd552c..3214ef90e 100644
--- a/chaos/common/message/MultiAddressMessageChannel.h
+++ b/chaos/common/message/MultiAddressMessageChannel.h
@@ -1,6 +1,6 @@
 /*
  *	MultiAddressMessageChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -23,6 +23,8 @@
 #include <chaos/common/message/MultiAddressMessageRequestFuture.h>
 #include <chaos/common/network/URLServiceFeeder.h>
 
+#include <boost/thread.hpp>
+
 #include <map>
 #include <string>
 #include <set>
@@ -70,6 +72,8 @@ namespace chaos {
             private chaos::common::network::URLServiceFeederHandler {
                 friend class chaos::common::network::NetworkBroker;
                 friend class chaos::common::message::MultiAddressMessageRequestFuture;
+                    //!mutex for the managment of rescheduling server
+                boost::mutex mutex_server_usage;
 
                 uint64_t last_retry;
                     //!list of the offline server index
diff --git a/chaos/common/message/MultiAddressMessageRequestFuture.cpp b/chaos/common/message/MultiAddressMessageRequestFuture.cpp
index 4f58f2280..325cf67d6 100644
--- a/chaos/common/message/MultiAddressMessageRequestFuture.cpp
+++ b/chaos/common/message/MultiAddressMessageRequestFuture.cpp
@@ -1,6 +1,6 @@
 /*
  *	MultiAddressMessageRequestFuture.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/MultiAddressMessageRequestFuture.h b/chaos/common/message/MultiAddressMessageRequestFuture.h
index 9c9dead8e..d0178a6e9 100644
--- a/chaos/common/message/MultiAddressMessageRequestFuture.h
+++ b/chaos/common/message/MultiAddressMessageRequestFuture.h
@@ -1,6 +1,6 @@
 /*
  *	MultiAddressMessageRequestFuture.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/NodeMessageChannel.cpp b/chaos/common/message/NodeMessageChannel.cpp
index 43b93a68b..29efd093c 100644
--- a/chaos/common/message/NodeMessageChannel.cpp
+++ b/chaos/common/message/NodeMessageChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	NodeMessageChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/NodeMessageChannel.h b/chaos/common/message/NodeMessageChannel.h
index baef6df6b..02eaaddf6 100644
--- a/chaos/common/message/NodeMessageChannel.h
+++ b/chaos/common/message/NodeMessageChannel.h
@@ -1,6 +1,6 @@
 /*
  *	NodeMessageChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/PerformanceNodeChannel.cpp b/chaos/common/message/PerformanceNodeChannel.cpp
index 8c241be5a..62e90b1bb 100644
--- a/chaos/common/message/PerformanceNodeChannel.cpp
+++ b/chaos/common/message/PerformanceNodeChannel.cpp
@@ -1,6 +1,6 @@
 /*
  *	PerformanceNodeChannel.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/message/PerformanceNodeChannel.h b/chaos/common/message/PerformanceNodeChannel.h
index 2c40a889f..bccae249f 100644
--- a/chaos/common/message/PerformanceNodeChannel.h
+++ b/chaos/common/message/PerformanceNodeChannel.h
@@ -1,6 +1,6 @@
 /*
  *	PerformanceNodeChannel.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/CNodeNetworkAddress.h b/chaos/common/network/CNodeNetworkAddress.h
index b339228d4..3293fe4b1 100644
--- a/chaos/common/network/CNodeNetworkAddress.h
+++ b/chaos/common/network/CNodeNetworkAddress.h
@@ -1,6 +1,6 @@
 /*
  *	NetworkAddress.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/NetworkBroker.cpp b/chaos/common/network/NetworkBroker.cpp
index ef9fd54f7..bbc7b8fc3 100644
--- a/chaos/common/network/NetworkBroker.cpp
+++ b/chaos/common/network/NetworkBroker.cpp
@@ -1,6 +1,6 @@
 /*
  *	NetworkBroker.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/NetworkBroker.h b/chaos/common/network/NetworkBroker.h
index f56f9dbbf..3532e8564 100644
--- a/chaos/common/network/NetworkBroker.h
+++ b/chaos/common/network/NetworkBroker.h
@@ -1,6 +1,6 @@
 /*
  *	NetworkBroker.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/NetworkForwardInfo.h b/chaos/common/network/NetworkForwardInfo.h
index 632653a73..871c0459c 100644
--- a/chaos/common/network/NetworkForwardInfo.h
+++ b/chaos/common/network/NetworkForwardInfo.h
@@ -1,6 +1,6 @@
 /*
  *	NetworkForwardInfo.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/PerformanceManagment.cpp b/chaos/common/network/PerformanceManagment.cpp
index ea52810ca..97d41165c 100644
--- a/chaos/common/network/PerformanceManagment.cpp
+++ b/chaos/common/network/PerformanceManagment.cpp
@@ -1,6 +1,6 @@
 /*
  *	PerformanceManagment.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/PerformanceManagment.h b/chaos/common/network/PerformanceManagment.h
index 2cccce8fd..007f8cdb8 100644
--- a/chaos/common/network/PerformanceManagment.h
+++ b/chaos/common/network/PerformanceManagment.h
@@ -1,6 +1,6 @@
 /*
  *	PerformanceManagment.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/URL.cpp b/chaos/common/network/URL.cpp
index 0f9ec2be0..699a86782 100644
--- a/chaos/common/network/URL.cpp
+++ b/chaos/common/network/URL.cpp
@@ -1,6 +1,6 @@
 /*
  *	URL.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/URL.h b/chaos/common/network/URL.h
index 7a90ca7b3..4e3cf78b8 100644
--- a/chaos/common/network/URL.h
+++ b/chaos/common/network/URL.h
@@ -1,6 +1,6 @@
 /*
  *	URL.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/URLServiceFeeder.cpp b/chaos/common/network/URLServiceFeeder.cpp
index 98adf073f..fbf25a637 100644
--- a/chaos/common/network/URLServiceFeeder.cpp
+++ b/chaos/common/network/URLServiceFeeder.cpp
@@ -1,6 +1,6 @@
 /*
  *	URLServiceFeeder.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/network/URLServiceFeeder.h b/chaos/common/network/URLServiceFeeder.h
index 0a36fb723..037efc8b2 100644
--- a/chaos/common/network/URLServiceFeeder.h
+++ b/chaos/common/network/URLServiceFeeder.h
@@ -1,6 +1,6 @@
 /*
  *	URLServiceFeeder.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/plugin/AbstractPlugin.cpp b/chaos/common/plugin/AbstractPlugin.cpp
index 5083dcb4e..1dc16a5bf 100644
--- a/chaos/common/plugin/AbstractPlugin.cpp
+++ b/chaos/common/plugin/AbstractPlugin.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractPlugin.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/plugin/AbstractPlugin.h b/chaos/common/plugin/AbstractPlugin.h
index d986f1c0a..8876f606d 100644
--- a/chaos/common/plugin/AbstractPlugin.h
+++ b/chaos/common/plugin/AbstractPlugin.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractPlugin.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
@@ -28,7 +28,7 @@
 namespace chaos {
     namespace common {
         
-        //! Name space for grupping class for the plugin managment system of !CHOAS framework
+        //! Name space for grupping class for the plugin managment system of !CHAOS framework
         namespace plugin {
             
 
diff --git a/chaos/common/plugin/PluginDefinition.h b/chaos/common/plugin/PluginDefinition.h
index dd6aa8a8f..de521742a 100644
--- a/chaos/common/plugin/PluginDefinition.h
+++ b/chaos/common/plugin/PluginDefinition.h
@@ -1,6 +1,6 @@
 /*
  *	PluginDefinition.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
@@ -29,7 +29,7 @@
 namespace chaos {
     namespace common {
         
-        //! Name space for grupping class for the plugin managment system of !CHOAS framework
+        //! Name space for grupping class for the plugin managment system of !CHAOS framework
         namespace plugin {
 			
             //! Define a class as plugin
diff --git a/chaos/common/plugin/PluginDiscover.h b/chaos/common/plugin/PluginDiscover.h
index 9a188e0c3..b493a0028 100644
--- a/chaos/common/plugin/PluginDiscover.h
+++ b/chaos/common/plugin/PluginDiscover.h
@@ -1,6 +1,6 @@
 /*
  *	PluginDiscover.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/plugin/PluginInspector.h b/chaos/common/plugin/PluginInspector.h
index f437c9e95..7f15598d2 100644
--- a/chaos/common/plugin/PluginInspector.h
+++ b/chaos/common/plugin/PluginInspector.h
@@ -1,6 +1,6 @@
 /*
  *	PluginInspector.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/plugin/PluginLoader.cpp b/chaos/common/plugin/PluginLoader.cpp
index 094b9fe54..07c8b5569 100644
--- a/chaos/common/plugin/PluginLoader.cpp
+++ b/chaos/common/plugin/PluginLoader.cpp
@@ -1,6 +1,6 @@
 /*
  *	PluginLoader.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/plugin/PluginLoader.h b/chaos/common/plugin/PluginLoader.h
index 2b4954b34..d8556ec38 100644
--- a/chaos/common/plugin/PluginLoader.h
+++ b/chaos/common/plugin/PluginLoader.h
@@ -1,6 +1,6 @@
 /*
  *	PluginLoader.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pool/CPoolMemory.h b/chaos/common/pool/CPoolMemory.h
index c2a319d64..70f2e68f4 100644
--- a/chaos/common/pool/CPoolMemory.h
+++ b/chaos/common/pool/CPoolMemory.h
@@ -1,6 +1,6 @@
 /*	
  *	CPoolMemory.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pool/CPoolMemoryObject.h b/chaos/common/pool/CPoolMemoryObject.h
index 83ba0bb51..98100a9a6 100644
--- a/chaos/common/pool/CPoolMemoryObject.h
+++ b/chaos/common/pool/CPoolMemoryObject.h
@@ -1,6 +1,6 @@
 /*	
  *	CPoolMemoryObject.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pool/ChaosPool.h b/chaos/common/pool/ChaosPool.h
index 514c8513e..10e5af746 100644
--- a/chaos/common/pool/ChaosPool.h
+++ b/chaos/common/pool/ChaosPool.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosPool.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pqueue/CObjectProcessingPriorityQueue.h b/chaos/common/pqueue/CObjectProcessingPriorityQueue.h
index f1c40bc85..6f4cecb92 100644
--- a/chaos/common/pqueue/CObjectProcessingPriorityQueue.h
+++ b/chaos/common/pqueue/CObjectProcessingPriorityQueue.h
@@ -1,6 +1,6 @@
 /*
  *	CObjectProcessingPriorityQueue.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pqueue/CObjectProcessingQueue.h b/chaos/common/pqueue/CObjectProcessingQueue.h
index cab14c7d4..cf3a56921 100644
--- a/chaos/common/pqueue/CObjectProcessingQueue.h
+++ b/chaos/common/pqueue/CObjectProcessingQueue.h
@@ -1,6 +1,6 @@
 /*
  *	CObjectProcessingQueue.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pqueue/CObjectProcessingQueueListener.h b/chaos/common/pqueue/CObjectProcessingQueueListener.h
index 5a4b63868..9f694bfc9 100644
--- a/chaos/common/pqueue/CObjectProcessingQueueListener.h
+++ b/chaos/common/pqueue/CObjectProcessingQueueListener.h
@@ -1,6 +1,6 @@
 /*	
  *	CObjectProcessingQueueListener.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/pqueue/ChaosProcessingQueue.h b/chaos/common/pqueue/ChaosProcessingQueue.h
index 5b94feda9..c32c605ac 100644
--- a/chaos/common/pqueue/ChaosProcessingQueue.h
+++ b/chaos/common/pqueue/ChaosProcessingQueue.h
@@ -1,6 +1,6 @@
 /*	
  *	pqueue.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/property/Property.h b/chaos/common/property/Property.h
new file mode 100644
index 000000000..a53bf332d
--- /dev/null
+++ b/chaos/common/property/Property.h
@@ -0,0 +1,132 @@
+/*
+ *	Property.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef CHAOSFramework_Property_h
+#define CHAOSFramework_Property_h
+
+#include <chaos/common/exception/CException.h>
+
+#include <boost/lexical_cast.hpp>
+
+#include <string>
+
+#define CHAOS_PROPERTY_READ_ONLY    1
+#define CHAOS_PROPERTY_WRITE_ONLY   2
+#define CHAOS_PROPERTY_READ_WRITE   3
+
+namespace chaos{
+    namespace common {
+        namespace property {
+
+                //! define a property abstraction
+            /*!
+             this abstration this at a property like only
+             string value and name and description. Subclass need to
+             implement the conversion between real value and string
+             */
+            class AbstractProperty {
+            protected:
+
+                std::string name;
+
+                std::string description;
+
+            public:
+                virtual void setStrValue(std::string str_value) = 0;
+
+                virtual std::string getStrValue() = 0;
+
+                const std::string& getName() {
+                    return name;
+                }
+
+                const std::string& getDescritption() {
+                    return description;
+                }
+            };
+
+                //this class has been inspiered by http://www.codeproject.com/Articles/3900/Implementing-Properties-In-C
+                //property entity implementation
+            template <
+            typename ClassOwner,
+            typename ValueType,
+            int AccessType >
+            class Property :
+            public AbstractProperty {
+
+                    //-- Pointer to the module that contains the property --
+                ClassOwner* class_owner_instance;
+                    //-- Pointer to set member function --
+                void (ClassOwner::*set)(ValueType value);
+                    //-- Pointer to get member function --
+                ValueType (ClassOwner::*get)();
+
+            public:
+                Property(){}
+                ~Property(){}
+
+
+                Property *defineProperty(ClassOwner* _class_owner_instance,
+                                         void (ClassOwner::*_set)(ValueType value),
+                                         ValueType (ClassOwner::*_get)(),
+                                         const std::string& _name,
+                                         const std::string& _description) {
+                    class_owner_instance = _class_owner_instance;
+                    name = _name;
+                    description = _description;
+                    set = _set;
+                    get = _get;
+                    return this;
+                }
+
+
+                    //-- Overload the = operator to set the value using the set member --
+                ValueType operator =(const ValueType& value) throw (chaos::CException)  {
+                    if(class_owner_instance == NULL) throw chaos::CException(-1, "No class sinstance defined", __PRETTY_FUNCTION__);
+                    if((AccessType == CHAOS_PROPERTY_WRITE_ONLY) ||
+                       (AccessType == CHAOS_PROPERTY_READ_WRITE)) {
+                        (class_owner_instance->*set)(value);
+                    }else{
+                        throw chaos::CException(-1, "Variable can't be set", __PRETTY_FUNCTION__);
+                    }
+                    return value;
+                }
+
+                    //-- Cast the property class to the internal type --
+                operator ValueType() throw (chaos::CException) {
+                    assert(class_owner_instance != NULL);
+                    if((AccessType == CHAOS_PROPERTY_READ_ONLY) ||
+                       (AccessType == CHAOS_PROPERTY_READ_WRITE))
+                        return (class_owner_instance->*get)();
+                    else
+                        throw chaos::CException(-1, "Variable can't be read", __PRETTY_FUNCTION__);
+                }
+
+                void setStrValue(std::string str_value) {
+                    set(boost::lexical_cast<ValueType>(str_value));
+                }
+                
+                std::string getStrValue() {
+                    return boost::lexical_cast<std::string>(get());
+                }
+            };
+        }
+    }
+}
+#endif
diff --git a/chaos/common/property/PropertyCollector.h b/chaos/common/property/PropertyCollector.h
new file mode 100644
index 000000000..42389a2b5
--- /dev/null
+++ b/chaos/common/property/PropertyCollector.h
@@ -0,0 +1,93 @@
+/*
+ *	PropertyCollector.h
+ *	!CHAOS
+ *	Created by Bisegni Claudio.
+ *
+ *    	Copyright 2015 INFN, National Institute of Nuclear Physics
+ *
+ *    	Licensed under the Apache License, Version 2.0 (the "License");
+ *    	you may not use this file except in compliance with the License.
+ *    	You may obtain a copy of the License at
+ *
+ *    	http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    	Unless required by applicable law or agreed to in writing, software
+ *    	distributed under the License is distributed on an "AS IS" BASIS,
+ *    	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    	See the License for the specific language governing permissions and
+ *    	limitations under the License.
+ */
+#ifndef CHAOSFramework_PropertyCollector_h
+#define CHAOSFramework_PropertyCollector_h
+
+
+#include <chaos/common/property/Property.h>
+
+#include <map>
+
+#define DECLARE_CHAOS_PROPERTY(own, type, access_type, name)\
+chaos::common::property::Property<own, type, access_type> name;
+
+#define REGISTER_CHAOS_PROPERTY(section, name, set, get, description)\
+addPropertyToSection(section, name.defineProperty(this, set, get, #name, description));
+
+
+namespace chaos{
+    namespace common {
+            //! nameapce for the managment of the !CHAOS publishable properties.
+
+        namespace property {
+
+                //! define the list of the properties
+            typedef std::map<std::string, AbstractProperty* >   PropertyMap;
+                //! define the property sections
+            typedef std::map<std::string, PropertyMap >   PropertySections;
+
+                //! a collector for all calss or subclass property
+            /*!
+             Every class that extends the collector can register property(with rule, get and setter) that
+             will be published on metadata server and can be directly updated remotely.
+             */
+            class PropertyCollector {
+                    //!associate a section name to a property list
+                PropertySections property_sections;
+
+            protected:
+                    //! add a new property to a section
+                void addPropertyToSection(const std::string& section_name,
+                                          AbstractProperty *property_for_section) throw (chaos::CException) {
+                    if(property_sections.count(section_name) == 0) {
+                        property_sections.insert(make_pair(section_name, PropertyMap()));
+                    }
+                    if(property_sections[section_name].count(property_for_section->getName()) > 0) {
+                        throw chaos::CException(-1, "Property already registerd", __PRETTY_FUNCTION__);
+                    }
+                    property_sections[section_name].insert(make_pair(property_for_section->getName(), property_for_section));
+                }
+
+            public:
+                void setSectionProperty(const std::string& section,
+                                        const std::string& property_name,
+                                        const std::string& property_value)  throw (chaos::CException) {
+                    if((property_sections.count(section) > 0) &&
+                       (property_sections[section].count(property_name) > 0)){
+                        property_sections[section][property_name]->setStrValue(property_value);
+                    }
+                }
+
+                std::string getSectionProperty(const std::string& section,
+                                               const std::string& property_name) {
+                    if((property_sections.count(section) > 0) &&
+                       (property_sections[section].count(property_name) > 0)){
+                        return property_sections[section][property_name]->getStrValue();
+                    } else {
+                        return std::string();
+                    }
+                }
+                
+            };
+        }
+    }
+}
+
+#endif
diff --git a/chaos/common/rpc/ChaosRpc.h b/chaos/common/rpc/ChaosRpc.h
index 6775dcf6f..4c52ac9d3 100644
--- a/chaos/common/rpc/ChaosRpc.h
+++ b/chaos/common/rpc/ChaosRpc.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosRpc.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/RpcClient.h b/chaos/common/rpc/RpcClient.h
index c3e185336..8a0e70e0a 100644
--- a/chaos/common/rpc/RpcClient.h
+++ b/chaos/common/rpc/RpcClient.h
@@ -1,6 +1,6 @@
 /*	
  *	RpcClient.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/RpcMessageForwarder.h b/chaos/common/rpc/RpcMessageForwarder.h
index 32d32e8b6..28852eefd 100644
--- a/chaos/common/rpc/RpcMessageForwarder.h
+++ b/chaos/common/rpc/RpcMessageForwarder.h
@@ -1,6 +1,6 @@
 /*
  *	RPCMessageForwarder.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/RpcServer.cpp b/chaos/common/rpc/RpcServer.cpp
index 732d76927..1f4caeede 100644
--- a/chaos/common/rpc/RpcServer.cpp
+++ b/chaos/common/rpc/RpcServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	RpcServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/RpcServer.h b/chaos/common/rpc/RpcServer.h
index d5faf52df..5807bed2d 100644
--- a/chaos/common/rpc/RpcServer.h
+++ b/chaos/common/rpc/RpcServer.h
@@ -1,6 +1,6 @@
 /*
  *	RpcServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/RpcServerHandler.h b/chaos/common/rpc/RpcServerHandler.h
index c77ff0ee9..bb4a77c32 100644
--- a/chaos/common/rpc/RpcServerHandler.h
+++ b/chaos/common/rpc/RpcServerHandler.h
@@ -1,6 +1,6 @@
 /*
  *	RpcServerHanlder.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/tcpuv/TCPUVServer.cpp b/chaos/common/rpc/tcpuv/TCPUVServer.cpp
index e21ba03de..8e672509d 100644
--- a/chaos/common/rpc/tcpuv/TCPUVServer.cpp
+++ b/chaos/common/rpc/tcpuv/TCPUVServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	TCPUVServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/zmq/ZMQClient.cpp b/chaos/common/rpc/zmq/ZMQClient.cpp
index 984b93097..d70fe4fc8 100644
--- a/chaos/common/rpc/zmq/ZMQClient.cpp
+++ b/chaos/common/rpc/zmq/ZMQClient.cpp
@@ -1,6 +1,6 @@
 /*
  *	ZMQClient.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/zmq/ZMQServer.cpp b/chaos/common/rpc/zmq/ZMQServer.cpp
index af62cd356..aef49bad2 100644
--- a/chaos/common/rpc/zmq/ZMQServer.cpp
+++ b/chaos/common/rpc/zmq/ZMQServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	ZMQServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/rpc/zmq/ZMQServer.h b/chaos/common/rpc/zmq/ZMQServer.h
index b4b23cd2b..4377005c8 100644
--- a/chaos/common/rpc/zmq/ZMQServer.h
+++ b/chaos/common/rpc/zmq/ZMQServer.h
@@ -1,6 +1,6 @@
 /*	
  *	ZMQServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/sync_rpc/ChaosSyncRpc.h b/chaos/common/sync_rpc/ChaosSyncRpc.h
index f7122d715..86c90a40a 100644
--- a/chaos/common/sync_rpc/ChaosSyncRpc.h
+++ b/chaos/common/sync_rpc/ChaosSyncRpc.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosSyncRpc.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/sync_rpc/HTTPRpcSyncServer.cpp b/chaos/common/sync_rpc/HTTPRpcSyncServer.cpp
index 647a34b71..cd1587d49 100644
--- a/chaos/common/sync_rpc/HTTPRpcSyncServer.cpp
+++ b/chaos/common/sync_rpc/HTTPRpcSyncServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	HTTPRpcSyncServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/sync_rpc/HTTPRpcSyncServer.h b/chaos/common/sync_rpc/HTTPRpcSyncServer.h
index 3a02fb8a5..cd7359c80 100644
--- a/chaos/common/sync_rpc/HTTPRpcSyncServer.h
+++ b/chaos/common/sync_rpc/HTTPRpcSyncServer.h
@@ -1,6 +1,6 @@
 /*
  *	HTTPRpcSyncServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/sync_rpc/RpcSyncServer.cpp b/chaos/common/sync_rpc/RpcSyncServer.cpp
index afa9c22a2..9e4981f35 100644
--- a/chaos/common/sync_rpc/RpcSyncServer.cpp
+++ b/chaos/common/sync_rpc/RpcSyncServer.cpp
@@ -1,6 +1,6 @@
 /*
  *	RpcSyncServer.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/sync_rpc/RpcSyncServer.h b/chaos/common/sync_rpc/RpcSyncServer.h
index f17da75da..d702881fc 100644
--- a/chaos/common/sync_rpc/RpcSyncServer.h
+++ b/chaos/common/sync_rpc/RpcSyncServer.h
@@ -1,6 +1,6 @@
 /*
  *	RpcSyncServer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/thread/ChaosThread.h b/chaos/common/thread/ChaosThread.h
index d5597e761..e38f80c69 100644
--- a/chaos/common/thread/ChaosThread.h
+++ b/chaos/common/thread/ChaosThread.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosThread.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/thread/MultiKeyObjectWaitSemaphore.h b/chaos/common/thread/MultiKeyObjectWaitSemaphore.h
index c9d88e990..2efd47188 100644
--- a/chaos/common/thread/MultiKeyObjectWaitSemaphore.h
+++ b/chaos/common/thread/MultiKeyObjectWaitSemaphore.h
@@ -1,6 +1,6 @@
 /*	
  *	MultiKeyObjectWaitSemaphore.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/thread/ObjectWaitSemaphore.h b/chaos/common/thread/ObjectWaitSemaphore.h
index 9682002db..d38b8b88d 100644
--- a/chaos/common/thread/ObjectWaitSemaphore.h
+++ b/chaos/common/thread/ObjectWaitSemaphore.h
@@ -1,6 +1,6 @@
 /*	
  *	ObjectWaitSemaphore.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright <#Year#> INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/thread/TemplatedConcurrentQueue.h b/chaos/common/thread/TemplatedConcurrentQueue.h
index cce875244..5f3a82982 100644
--- a/chaos/common/thread/TemplatedConcurrentQueue.h
+++ b/chaos/common/thread/TemplatedConcurrentQueue.h
@@ -1,6 +1,6 @@
 /*
  *	TemplatedConcurrentQueue.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/thread/WaitSemaphore.h b/chaos/common/thread/WaitSemaphore.h
index 23b692169..272fefdc3 100644
--- a/chaos/common/thread/WaitSemaphore.h
+++ b/chaos/common/thread/WaitSemaphore.h
@@ -1,6 +1,6 @@
 /*	
  *	WaitSemaphore.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/ArrayPointer.h b/chaos/common/utility/ArrayPointer.h
index 9962cd81b..810b0da56 100644
--- a/chaos/common/utility/ArrayPointer.h
+++ b/chaos/common/utility/ArrayPointer.h
@@ -1,6 +1,6 @@
 /*
  *	ArrayPointer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/Atomic.h b/chaos/common/utility/Atomic.h
index 8ba94358a..fc296ba91 100644
--- a/chaos/common/utility/Atomic.h
+++ b/chaos/common/utility/Atomic.h
@@ -1,6 +1,6 @@
 /*
  *	Atomic.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/ConcuredUsedItem.h b/chaos/common/utility/ConcuredUsedItem.h
index 87dfddcd7..175df45ab 100644
--- a/chaos/common/utility/ConcuredUsedItem.h
+++ b/chaos/common/utility/ConcuredUsedItem.h
@@ -1,6 +1,6 @@
 /*
  *	ConcuredUsedItem.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/InetUtility.h b/chaos/common/utility/InetUtility.h
index 557fa70d7..119ad24ea 100644
--- a/chaos/common/utility/InetUtility.h
+++ b/chaos/common/utility/InetUtility.h
@@ -1,6 +1,6 @@
 /*
  *	InetUtility.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/InizializableService.cpp b/chaos/common/utility/InizializableService.cpp
index 6b59bd2ea..5d8054535 100644
--- a/chaos/common/utility/InizializableService.cpp
+++ b/chaos/common/utility/InizializableService.cpp
@@ -1,6 +1,6 @@
 /*
  *	InizializableService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/InizializableService.h b/chaos/common/utility/InizializableService.h
index 75645cee3..5d81611e1 100644
--- a/chaos/common/utility/InizializableService.h
+++ b/chaos/common/utility/InizializableService.h
@@ -1,6 +1,6 @@
 /*
  *	InizializableService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/LoadableService.cpp b/chaos/common/utility/LoadableService.cpp
index 81318d55b..f2690553a 100644
--- a/chaos/common/utility/LoadableService.cpp
+++ b/chaos/common/utility/LoadableService.cpp
@@ -1,6 +1,6 @@
 /*
  *	LoadableService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/LoadableService.h b/chaos/common/utility/LoadableService.h
index 6d8d171c6..8dab6450b 100644
--- a/chaos/common/utility/LoadableService.h
+++ b/chaos/common/utility/LoadableService.h
@@ -1,6 +1,6 @@
 /*
  *	LoadableService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/NamedService.cpp b/chaos/common/utility/NamedService.cpp
index 7be9e0219..a849423c9 100644
--- a/chaos/common/utility/NamedService.cpp
+++ b/chaos/common/utility/NamedService.cpp
@@ -1,6 +1,6 @@
 /*
  *	NamedService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/NamedService.h b/chaos/common/utility/NamedService.h
index a5ede15a8..ce3f2765c 100644
--- a/chaos/common/utility/NamedService.h
+++ b/chaos/common/utility/NamedService.h
@@ -1,6 +1,6 @@
 /*
  *	NamedServices.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/ObjectFactoryRegister.h b/chaos/common/utility/ObjectFactoryRegister.h
index e84abddb2..9fa2451e6 100644
--- a/chaos/common/utility/ObjectFactoryRegister.h
+++ b/chaos/common/utility/ObjectFactoryRegister.h
@@ -1,6 +1,6 @@
 /*
  *	DispatcherRegister.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/ObjectInstancer.h b/chaos/common/utility/ObjectInstancer.h
index 774df2599..fdde19021 100644
--- a/chaos/common/utility/ObjectInstancer.h
+++ b/chaos/common/utility/ObjectInstancer.h
@@ -1,6 +1,6 @@
 /*
  *	ObjectInstancer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/ObjectSlot.h b/chaos/common/utility/ObjectSlot.h
index 8e7e1cece..d7222bc26 100644
--- a/chaos/common/utility/ObjectSlot.h
+++ b/chaos/common/utility/ObjectSlot.h
@@ -1,6 +1,6 @@
 /*
  *	ObjectSlot.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/SingleBufferCircularBuffer.h b/chaos/common/utility/SingleBufferCircularBuffer.h
index bdd3ccd4c..b66cf0188 100644
--- a/chaos/common/utility/SingleBufferCircularBuffer.h
+++ b/chaos/common/utility/SingleBufferCircularBuffer.h
@@ -1,6 +1,6 @@
 /*
  *	 SingleBufferCircularBuffer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/Singleton.h b/chaos/common/utility/Singleton.h
index 4cf10856c..ccd06351e 100644
--- a/chaos/common/utility/Singleton.h
+++ b/chaos/common/utility/Singleton.h
@@ -1,6 +1,6 @@
 /*
  *	Singleton.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/StartableService.cpp b/chaos/common/utility/StartableService.cpp
index a39aff496..50042f52c 100644
--- a/chaos/common/utility/StartableService.cpp
+++ b/chaos/common/utility/StartableService.cpp
@@ -1,6 +1,6 @@
 /*
  *	StartableService.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/StartableService.h b/chaos/common/utility/StartableService.h
index 88bd0d329..75dca1737 100644
--- a/chaos/common/utility/StartableService.h
+++ b/chaos/common/utility/StartableService.h
@@ -1,6 +1,6 @@
 /*
  *	StartableService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/TemplatedKeyObjectContainer.h b/chaos/common/utility/TemplatedKeyObjectContainer.h
index 257c93973..77abb867e 100644
--- a/chaos/common/utility/TemplatedKeyObjectContainer.h
+++ b/chaos/common/utility/TemplatedKeyObjectContainer.h
@@ -1,6 +1,6 @@
 /*
  *	TemplatedKeyObjectContainer.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/TemplatedKeyValueHashMap.h b/chaos/common/utility/TemplatedKeyValueHashMap.h
index 972356db8..a59e57afa 100644
--- a/chaos/common/utility/TemplatedKeyValueHashMap.h
+++ b/chaos/common/utility/TemplatedKeyValueHashMap.h
@@ -1,6 +1,6 @@
 /*
  *	TemplatedKeyValueHashMap.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/TimingUtil.h b/chaos/common/utility/TimingUtil.h
index ef6c82e38..f3b47ff03 100644
--- a/chaos/common/utility/TimingUtil.h
+++ b/chaos/common/utility/TimingUtil.h
@@ -1,6 +1,6 @@
 /*
  *	TimingUtil.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/UUIDUtil.h b/chaos/common/utility/UUIDUtil.h
index 246a97aae..38ad7f31b 100644
--- a/chaos/common/utility/UUIDUtil.h
+++ b/chaos/common/utility/UUIDUtil.h
@@ -1,6 +1,6 @@
 /*
  *	UUIDUtil.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/common/utility/UrlAccessibleService.h b/chaos/common/utility/UrlAccessibleService.h
index e4eef3b02..6eb7e3486 100644
--- a/chaos/common/utility/UrlAccessibleService.h
+++ b/chaos/common/utility/UrlAccessibleService.h
@@ -1,6 +1,6 @@
 /*
  *	UrlAccessibleService.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ChaosCUToolkit.cpp b/chaos/cu_toolkit/ChaosCUToolkit.cpp
index d523624d4..a1639594b 100644
--- a/chaos/cu_toolkit/ChaosCUToolkit.cpp
+++ b/chaos/cu_toolkit/ChaosCUToolkit.cpp
@@ -1,6 +1,6 @@
 /*	
  *	ChaosCUToolkit.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ChaosCUToolkit.h b/chaos/cu_toolkit/ChaosCUToolkit.h
index 2aa42723b..e91309277 100644
--- a/chaos/cu_toolkit/ChaosCUToolkit.h
+++ b/chaos/cu_toolkit/ChaosCUToolkit.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosCUToolkit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/CommandManager/CommandManager.cpp b/chaos/cu_toolkit/CommandManager/CommandManager.cpp
index 70d2f7e1c..930f60feb 100644
--- a/chaos/cu_toolkit/CommandManager/CommandManager.cpp
+++ b/chaos/cu_toolkit/CommandManager/CommandManager.cpp
@@ -1,6 +1,6 @@
 /*	
  *	CommandManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/CommandManager/CommandManager.h b/chaos/cu_toolkit/CommandManager/CommandManager.h
index 100db9fd7..bebdede17 100644
--- a/chaos/cu_toolkit/CommandManager/CommandManager.h
+++ b/chaos/cu_toolkit/CommandManager/CommandManager.h
@@ -1,6 +1,6 @@
 /*
  *	CommandManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/CommandManager/CommandManagerDefaultAdapters.h b/chaos/cu_toolkit/CommandManager/CommandManagerDefaultAdapters.h
index c140122d5..22b8c99e3 100644
--- a/chaos/cu_toolkit/CommandManager/CommandManagerDefaultAdapters.h
+++ b/chaos/cu_toolkit/CommandManager/CommandManagerDefaultAdapters.h
@@ -1,6 +1,6 @@
 /*	
  *	CommandManagerDefaultAdapters.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/AbstractControlUnit.cpp b/chaos/cu_toolkit/ControlManager/AbstractControlUnit.cpp
index 7c322088a..07e889eae 100644
--- a/chaos/cu_toolkit/ControlManager/AbstractControlUnit.cpp
+++ b/chaos/cu_toolkit/ControlManager/AbstractControlUnit.cpp
@@ -1,6 +1,6 @@
 /*
  *	ControlUnit.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/AbstractControlUnit.h b/chaos/cu_toolkit/ControlManager/AbstractControlUnit.h
index 45f473022..31cc123a2 100644
--- a/chaos/cu_toolkit/ControlManager/AbstractControlUnit.h
+++ b/chaos/cu_toolkit/ControlManager/AbstractControlUnit.h
@@ -1,6 +1,6 @@
 /*
  *	ControlUnit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.cpp b/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.cpp
index 1ca2d99b9..797aba046 100644
--- a/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.cpp
+++ b/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.cpp
@@ -1,6 +1,6 @@
 /*
  *	AttributeSharedCacheWrapper.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.h b/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.h
index ada34b720..b46097b40 100644
--- a/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.h
+++ b/chaos/cu_toolkit/ControlManager/AttributeSharedCacheWrapper.h
@@ -1,6 +1,6 @@
 /*
  *	AttributeSharedCacheWrapper.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/ControlManager.cpp b/chaos/cu_toolkit/ControlManager/ControlManager.cpp
index f7752ccb1..2b65ee268 100644
--- a/chaos/cu_toolkit/ControlManager/ControlManager.cpp
+++ b/chaos/cu_toolkit/ControlManager/ControlManager.cpp
@@ -1,6 +1,6 @@
 /*
  *	ControlManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/ControlManager.h b/chaos/cu_toolkit/ControlManager/ControlManager.h
index 67d41905a..bc7f349dc 100644
--- a/chaos/cu_toolkit/ControlManager/ControlManager.h
+++ b/chaos/cu_toolkit/ControlManager/ControlManager.h
@@ -1,6 +1,6 @@
 /*
  *	ControlManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.cpp b/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.cpp
index a2db6b4d4..408b03a47 100644
--- a/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.cpp
+++ b/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.cpp
@@ -1,6 +1,6 @@
 /*
  *	RTAbstractControlUnit.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.h b/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.h
index b18d31841..4ad45ba3e 100644
--- a/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.h
+++ b/chaos/cu_toolkit/ControlManager/RTAbstractControlUnit.h
@@ -1,6 +1,6 @@
 /*
  *	RTAbstractControlUnit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/SCAbstractControlUnit.h b/chaos/cu_toolkit/ControlManager/SCAbstractControlUnit.h
index 33a1d9c91..c5c0ca0a2 100644
--- a/chaos/cu_toolkit/ControlManager/SCAbstractControlUnit.h
+++ b/chaos/cu_toolkit/ControlManager/SCAbstractControlUnit.h
@@ -1,6 +1,6 @@
 /*
  *	SCAbstractControlUnit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/WorkUnitManagement.cpp b/chaos/cu_toolkit/ControlManager/WorkUnitManagement.cpp
index 7c507272e..7691a5744 100644
--- a/chaos/cu_toolkit/ControlManager/WorkUnitManagement.cpp
+++ b/chaos/cu_toolkit/ControlManager/WorkUnitManagement.cpp
@@ -1,6 +1,6 @@
 /*
  *	WorkUnitManagement.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/WorkUnitManagement.h b/chaos/cu_toolkit/ControlManager/WorkUnitManagement.h
index 18d92a005..8ea45bb0f 100644
--- a/chaos/cu_toolkit/ControlManager/WorkUnitManagement.h
+++ b/chaos/cu_toolkit/ControlManager/WorkUnitManagement.h
@@ -1,6 +1,6 @@
 /*
  *	WorkUnitManagement.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.cpp b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.cpp
index 5b067354c..e79f14ddf 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.cpp
+++ b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.cpp
@@ -1,6 +1,6 @@
 /*
  *	SlowCommand.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.h b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.h
index a71349ed3..ee976a212 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.h
+++ b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommand.h
@@ -1,6 +1,6 @@
 /*
  *	SlowCommand.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -49,7 +49,7 @@ namespace chaos{
         
         namespace control_manager {
             
-            //! The name space that group all foundamental class need by slow control !CHOAS implementation
+            //! The name space that group all foundamental class need by slow control !CHAOS implementation
             namespace slow_command {
 				
 				namespace command {
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.cpp b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.cpp
index 96028615e..94520b20e 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.cpp
+++ b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.cpp
@@ -1,6 +1,6 @@
 /*
  *	SlowCommandExecutor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.h b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.h
index 514a6c666..e8d047d2e 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.h
+++ b/chaos/cu_toolkit/ControlManager/slow_command/SlowCommandExecutor.h
@@ -1,6 +1,6 @@
 /*
  *	SlowCommandExecutor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.cpp b/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.cpp
index 6fd0467e3..785fa9993 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.cpp
+++ b/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.cpp
@@ -1,6 +1,6 @@
 /*
  *	SetAttributeCommand.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.h b/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.h
index 87888fb4f..34cb5493a 100644
--- a/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.h
+++ b/chaos/cu_toolkit/ControlManager/slow_command/command/SetAttributeCommand.h
@@ -1,6 +1,6 @@
 /*
  *	SetAttributeCommand.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/DataManager/DataManager.cpp b/chaos/cu_toolkit/DataManager/DataManager.cpp
index 11cd04c1e..035099389 100644
--- a/chaos/cu_toolkit/DataManager/DataManager.cpp
+++ b/chaos/cu_toolkit/DataManager/DataManager.cpp
@@ -1,6 +1,6 @@
 /*	
  *	DataManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/DataManager/DataManager.h b/chaos/cu_toolkit/DataManager/DataManager.h
index ffd1e3af1..1ff3e0a01 100644
--- a/chaos/cu_toolkit/DataManager/DataManager.h
+++ b/chaos/cu_toolkit/DataManager/DataManager.h
@@ -1,6 +1,6 @@
 /*
  *	DataManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/DataManager/DataManagerException.h b/chaos/cu_toolkit/DataManager/DataManagerException.h
index 70150a778..8d1160650 100644
--- a/chaos/cu_toolkit/DataManager/DataManagerException.h
+++ b/chaos/cu_toolkit/DataManager/DataManagerException.h
@@ -1,6 +1,6 @@
 /*
  *	DataManagerException.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/DataManager/KeyDataStorage.cpp b/chaos/cu_toolkit/DataManager/KeyDataStorage.cpp
index ec9b21923..c17e19601 100644
--- a/chaos/cu_toolkit/DataManager/KeyDataStorage.cpp
+++ b/chaos/cu_toolkit/DataManager/KeyDataStorage.cpp
@@ -1,6 +1,6 @@
   /*
  *	KeyDataStorage.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/DataManager/KeyDataStorage.h b/chaos/cu_toolkit/DataManager/KeyDataStorage.h
index fd6288841..62bfeb196 100644
--- a/chaos/cu_toolkit/DataManager/KeyDataStorage.h
+++ b/chaos/cu_toolkit/DataManager/KeyDataStorage.h
@@ -1,6 +1,6 @@
 /*
  *	KeyDataStorage.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/DriverManager.cpp b/chaos/cu_toolkit/driver_manager/DriverManager.cpp
index 33136140f..3c3ca5340 100644
--- a/chaos/cu_toolkit/driver_manager/DriverManager.cpp
+++ b/chaos/cu_toolkit/driver_manager/DriverManager.cpp
@@ -1,6 +1,6 @@
 /*
  *	DriverManager.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/DriverManager.h b/chaos/cu_toolkit/driver_manager/DriverManager.h
index 170d91d60..9df7083b5 100644
--- a/chaos/cu_toolkit/driver_manager/DriverManager.h
+++ b/chaos/cu_toolkit/driver_manager/DriverManager.h
@@ -1,6 +1,6 @@
 /*
  *	DriverManager.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp
index 8f918eb45..fe3192f9f 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp
@@ -1,6 +1,6 @@
  /*
  *	AbstractDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h
index 50707a47b..2a3cf2a32 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -57,7 +57,7 @@ namespace chaos{
 				
                     //! !CHAOS Device Driver abstract class
                 /*!
-                    This represent the base class for all driver in !CHOAS. For standardize the comunicacetion 
+                    This represent the base class for all driver in !CHAOS. For standardize the comunicacetion 
                     a message queue is used for receive DrvMsg pack.
                  */
 				class AbstractDriver:
diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.cpp b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.cpp
index f9e540524..d5cf0da26 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.cpp
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractDriverPLugin.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h
index df367262d..c87e7bf10 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h
@@ -1,6 +1,6 @@
 /*
  *	DriverWrapperPlugin.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp
index 5b6073a19..71e7f94de 100644
--- a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp
+++ b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp
@@ -1,6 +1,6 @@
 /*
  *	DriverAccessor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h
index 90f816dc9..c497bf263 100644
--- a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h
+++ b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h
@@ -1,6 +1,6 @@
 /*
  *	DriverAccessor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.cpp b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.cpp
index 9e9aa99a6..9bb4342bc 100644
--- a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.cpp
+++ b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.cpp
@@ -1,6 +1,6 @@
 /*
  *	DriverPLuginLoader.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h
index 4d4b5b81b..608f75271 100644
--- a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h
+++ b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h
@@ -1,6 +1,6 @@
 /*
  *	DriverPluginLoader.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2013 INFN, National Institute of Nuclear Physics
diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h b/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h
index cec2d0f5b..8a6961a2b 100644
--- a/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h
+++ b/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h
@@ -1,6 +1,6 @@
 /*
  *	DriverGlobal.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/ChaosUIToolkit.cpp b/chaos/ui_toolkit/ChaosUIToolkit.cpp
index 0b13d770b..48383f571 100644
--- a/chaos/ui_toolkit/ChaosUIToolkit.cpp
+++ b/chaos/ui_toolkit/ChaosUIToolkit.cpp
@@ -1,6 +1,6 @@
 /*	
  *	ChaosUIToolkit.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/ChaosUIToolkit.h b/chaos/ui_toolkit/ChaosUIToolkit.h
index 4dadf527f..1ba2ec200 100644
--- a/chaos/ui_toolkit/ChaosUIToolkit.h
+++ b/chaos/ui_toolkit/ChaosUIToolkit.h
@@ -1,6 +1,6 @@
 /*	
  *	ChaosUIToolkit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/ChaosUIToolkitCWrapper.cc b/chaos/ui_toolkit/ChaosUIToolkitCWrapper.cc
index 12b7939cd..503ab2b04 100644
--- a/chaos/ui_toolkit/ChaosUIToolkitCWrapper.cc
+++ b/chaos/ui_toolkit/ChaosUIToolkitCWrapper.cc
@@ -1,6 +1,6 @@
 /*
  *	ChaosUIToolkit.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/ChaosUIToolkitCWrapper.h b/chaos/ui_toolkit/ChaosUIToolkitCWrapper.h
index c6515ff98..4f17e1151 100644
--- a/chaos/ui_toolkit/ChaosUIToolkitCWrapper.h
+++ b/chaos/ui_toolkit/ChaosUIToolkitCWrapper.h
@@ -1,6 +1,6 @@
 /*
  *	ChaosUIToolkitCWrapper.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -24,7 +24,7 @@
  *  \section page_cuit_sec Why an a "C" language wrapper?
  *  Some applications used in scentific experiment (as for example LabView) can be
  *  can be customized with the use of shared library written in "C" language. At this
- *  scope, !CHOAS give a simple interface to a DeviceController managed by user interface
+ *  scope, !CHAOS give a simple interface to a DeviceController managed by user interface
  *  toolkit \link UIToolkitCWrapper wrapped with few simple "C" function\endlink.
  */
 
diff --git a/chaos/ui_toolkit/HighLevelApi/DeviceController.cpp b/chaos/ui_toolkit/HighLevelApi/DeviceController.cpp
index 5eded2f5a..a612d4ec1 100644
--- a/chaos/ui_toolkit/HighLevelApi/DeviceController.cpp
+++ b/chaos/ui_toolkit/HighLevelApi/DeviceController.cpp
@@ -1,6 +1,6 @@
  /*
  *	DeviceLiveDataFetcher.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/HighLevelApi/DeviceController.h b/chaos/ui_toolkit/HighLevelApi/DeviceController.h
index a6e06e4a8..ce2f45a3a 100644
--- a/chaos/ui_toolkit/HighLevelApi/DeviceController.h
+++ b/chaos/ui_toolkit/HighLevelApi/DeviceController.h
@@ -1,6 +1,6 @@
 /*
  *	DeviceLiveDataFetcher.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/HighLevelApi/HLDataApi.cpp b/chaos/ui_toolkit/HighLevelApi/HLDataApi.cpp
index f14e08a01..1636f0cb3 100644
--- a/chaos/ui_toolkit/HighLevelApi/HLDataApi.cpp
+++ b/chaos/ui_toolkit/HighLevelApi/HLDataApi.cpp
@@ -1,6 +1,6 @@
 /*	
  *	HLDataApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/HighLevelApi/HLDataApi.h b/chaos/ui_toolkit/HighLevelApi/HLDataApi.h
index 7f17b93a3..f8e3459d0 100644
--- a/chaos/ui_toolkit/HighLevelApi/HLDataApi.h
+++ b/chaos/ui_toolkit/HighLevelApi/HLDataApi.h
@@ -1,6 +1,6 @@
 /*	
  *	HLDataApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.cpp b/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.cpp
index dc0c789fd..1d7a38aab 100644
--- a/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.cpp
+++ b/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.cpp
@@ -1,6 +1,6 @@
 /*	
  *	HLInfrastructureApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.h b/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.h
index f832cb0ce..e3d14daca 100644
--- a/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.h
+++ b/chaos/ui_toolkit/HighLevelApi/HLInfrastructureApi.h
@@ -1,6 +1,6 @@
 /*	
  *	HLInfrastructureApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/LowLevelApi/LLDataApi.cpp b/chaos/ui_toolkit/LowLevelApi/LLDataApi.cpp
index bbaed2992..c7bf40b53 100644
--- a/chaos/ui_toolkit/LowLevelApi/LLDataApi.cpp
+++ b/chaos/ui_toolkit/LowLevelApi/LLDataApi.cpp
@@ -1,6 +1,6 @@
 /*	
  *	LLDataApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/LowLevelApi/LLDataApi.h b/chaos/ui_toolkit/LowLevelApi/LLDataApi.h
index 91591e5a9..b0a4908ff 100644
--- a/chaos/ui_toolkit/LowLevelApi/LLDataApi.h
+++ b/chaos/ui_toolkit/LowLevelApi/LLDataApi.h
@@ -1,6 +1,6 @@
 /*	
  *	LLDataApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/LowLevelApi/LLRpcApi.cpp b/chaos/ui_toolkit/LowLevelApi/LLRpcApi.cpp
index 56add800f..6db7f62ab 100644
--- a/chaos/ui_toolkit/LowLevelApi/LLRpcApi.cpp
+++ b/chaos/ui_toolkit/LowLevelApi/LLRpcApi.cpp
@@ -1,6 +1,6 @@
 /*	
  *	LLRpcApi.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *	
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/LowLevelApi/LLRpcApi.h b/chaos/ui_toolkit/LowLevelApi/LLRpcApi.h
index ee8a53cad..545e6978f 100644
--- a/chaos/ui_toolkit/LowLevelApi/LLRpcApi.h
+++ b/chaos/ui_toolkit/LowLevelApi/LLRpcApi.h
@@ -1,6 +1,6 @@
 /*
  *	LLRpcApi.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
diff --git a/chaos/ui_toolkit/caching/LiveDataFetcher.h b/chaos/ui_toolkit/caching/LiveDataFetcher.h
index 611784d11..cd938accc 100644
--- a/chaos/ui_toolkit/caching/LiveDataFetcher.h
+++ b/chaos/ui_toolkit/caching/LiveDataFetcher.h
@@ -28,7 +28,7 @@ namespace chaos {
         namespace chaching {
             
             /*!
-             Class that implemnt the CDatawrapper fetcher from !CHOAS live data.
+             Class that implemnt the CDatawrapper fetcher from !CHAOS live data.
              */
             class LiveDataFetcher :
 			public chaos::caching_system::DataFetcherInterface<chaos_data::CDataWrapper>,
diff --git a/chaos_service_common/persistence/data_access/AbstractDataAccess.cpp b/chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
index 767a05de9..54de71ec7 100644
--- a/chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
+++ b/chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractDataAccess.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos_service_common/persistence/data_access/AbstractDataAccess.h b/chaos_service_common/persistence/data_access/AbstractDataAccess.h
index da3c4146b..87a6cf48a 100644
--- a/chaos_service_common/persistence/data_access/AbstractDataAccess.h
+++ b/chaos_service_common/persistence/data_access/AbstractDataAccess.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractDataAccess.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
@@ -20,11 +20,8 @@
 #ifndef __CHAOSFramework__AbstractDataAccess__
 #define __CHAOSFramework__AbstractDataAccess__
 
-#include "persistence_types.h"
-
 #include <chaos/common/utility/NamedService.h>
 
-
 #define DECLARE_DA_NAME static const char * const name;
 #define DEFINE_DA_NAME(x) const char * const x::name=#x;
 
@@ -41,7 +38,7 @@ namespace chaos {
                  */
                 class AbstractDataAccess:
                 public chaos::common::utility::NamedService {
-                   
+
                 public:
                     AbstractDataAccess(const std::string& name);
                     virtual ~AbstractDataAccess();
diff --git a/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp b/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp
index cb4bd9c9a..4fedbf3ff 100644
--- a/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp
+++ b/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *	AbstractPersistenceDriver.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.h b/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.h
index 42f6fdfef..2c859ed7d 100644
--- a/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.h
+++ b/chaos_service_common/persistence/data_access/AbstractPersistenceDriver.h
@@ -1,6 +1,6 @@
 /*
  *	AbstractPersistenceDriver.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyrigh 2015 INFN, National Institute of Nuclear Physics
diff --git a/chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp b/chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp
index 58abcb02b..cf2b33227 100644
--- a/chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp
+++ b/chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp
@@ -1,6 +1,6 @@
 /*
  *	MongoDBAccessor.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -39,6 +39,27 @@ const std::string& MongoDBAccessor::getDatabaseName() {
     return connection->getDatabaseName();
 }
 
+mongo::BSONObj MongoDBAccessor::regexOnField(const std::string& field_name,
+                                             const std::string& regex) {
+    return MONGODB_REGEX_ON_FILED(field_name, regex);
+}
+
+mongo::BSONObj MongoDBAccessor::arrayMatch(const std::string& serach_key, const std::string& search_value) {
+    return BSON("$elemMatch" << BSON(serach_key << search_value));
+}
+
+mongo::BSONObj MongoDBAccessor::arrayMatch(const std::vector<std::pair<std::string, std::string> >& search_keys_values) {
+    mongo::BSONObjBuilder q_math_build;
+        //scan all search info within array
+    for(std::vector<std::pair<std::string, std::string> >::const_iterator it = search_keys_values.begin();
+        it != search_keys_values.end();
+        it++){
+        q_math_build << it->first << it->second;
+    }
+
+    return BSON("$elemMatch" << q_math_build.obj());
+}
+
 int MongoDBAccessor::performPagedQuery(SearchResult& paged_result,
                                        const std::string& db_collection,
                                        mongo::Query q,
diff --git a/chaos_service_common/persistence/mongodb/MongoDBAccessor.h b/chaos_service_common/persistence/mongodb/MongoDBAccessor.h
index cf86c9fec..73bed8288 100644
--- a/chaos_service_common/persistence/mongodb/MongoDBAccessor.h
+++ b/chaos_service_common/persistence/mongodb/MongoDBAccessor.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBAccessor.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2015 INFN, National Institute of Nuclear Physics
@@ -51,7 +51,23 @@ namespace chaos {
                     virtual ~MongoDBAccessor();
                     
                     const std::string& getDatabaseName();
-                    
+
+                    mongo::BSONObj regexOnField(const std::string& field_name,
+                                                const std::string& regex);
+
+                        //! search within an array with a list of simple query()key/value
+                    /*!
+                     \param search_keys_values the key valu epairs that are the simple mongodb query(key/value)
+                     */
+                    mongo::BSONObj arrayMatch(const std::vector<std::pair<std::string, std::string> >& search_keys_values);
+
+                        //! search within an array with simple query key/value
+                    /*!
+                     \param serach_key the key for the field
+                     \param search_value the value corresponding to the key
+                     */
+                    mongo::BSONObj arrayMatch(const std::string& serach_key, const std::string& search_value);
+
                     //! perform a paged query
                     /*!
                      perform a query using paging logic
diff --git a/chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.h b/chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.h
index 099ec7440..447cd2713 100644
--- a/chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.h
+++ b/chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.h
@@ -1,6 +1,6 @@
 /*
  *	MongoDBHAConnection.h
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2014 INFN, National Institute of Nuclear Physics
diff --git a/example/ChaosCLI/ChaosCLI.xcodeproj/project.pbxproj b/example/ChaosCLI/ChaosCLI.xcodeproj/project.pbxproj
index bed883ad3..43f912564 100644
--- a/example/ChaosCLI/ChaosCLI.xcodeproj/project.pbxproj
+++ b/example/ChaosCLI/ChaosCLI.xcodeproj/project.pbxproj
@@ -203,13 +203,9 @@
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				HEADER_SEARCH_PATHS = (
 					../../,
-					/usr/local/include,
 					../../usr/local/include,
 				);
-				LIBRARY_SEARCH_PATHS = (
-					/usr/local/lib,
-					"$(SRCROOT)/../../usr/local/lib",
-				);
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../usr/local/lib";
 				OTHER_LDFLAGS = (
 					"-lboost_chrono",
 					"-lmemcached",
@@ -237,13 +233,9 @@
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				HEADER_SEARCH_PATHS = (
 					../../,
-					/usr/local/include,
 					../../usr/local/include,
 				);
-				LIBRARY_SEARCH_PATHS = (
-					/usr/local/lib,
-					"$(SRCROOT)/../../usr/local/lib",
-				);
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../usr/local/lib";
 				OTHER_LDFLAGS = (
 					"-lboost_chrono",
 					"-lmemcached",
diff --git a/example/ChaosCLI/main.cpp b/example/ChaosCLI/main.cpp
index 08bbcbf9d..e2bfacfc0 100644
--- a/example/ChaosCLI/main.cpp
+++ b/example/ChaosCLI/main.cpp
@@ -34,6 +34,7 @@
 
 using namespace std;
 using namespace chaos;
+using namespace chaos::common::data;
 using namespace chaos::ui;
 using namespace bson;
 using namespace boost;
diff --git a/example/ChaosPerformanceTester/ChaosPerformanceTester.xcodeproj/project.pbxproj b/example/ChaosPerformanceTester/ChaosPerformanceTester.xcodeproj/project.pbxproj
index a69b21b92..28b15b2bb 100644
--- a/example/ChaosPerformanceTester/ChaosPerformanceTester.xcodeproj/project.pbxproj
+++ b/example/ChaosPerformanceTester/ChaosPerformanceTester.xcodeproj/project.pbxproj
@@ -192,13 +192,9 @@
 				CONFIGURATION_BUILD_DIR = "$(SRCROOT)/../../usr/local/bin";
 				HEADER_SEARCH_PATHS = (
 					../../,
-					/usr/local/include,
 					../../usr/local/include,
 				);
-				LIBRARY_SEARCH_PATHS = (
-					/usr/local/lib,
-					"$(SRCROOT)/../../usr/local/lib",
-				);
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../usr/local/lib";
 				OTHER_LDFLAGS = (
 					"-lboost_chrono",
 					"-lmemcached",
@@ -224,13 +220,9 @@
 				CONFIGURATION_BUILD_DIR = "$(SRCROOT)/../../usr/local/bin";
 				HEADER_SEARCH_PATHS = (
 					../../,
-					/usr/local/include,
 					../../usr/local/include,
 				);
-				LIBRARY_SEARCH_PATHS = (
-					/usr/local/lib,
-					"$(SRCROOT)/../../usr/local/lib",
-				);
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../usr/local/lib";
 				OTHER_LDFLAGS = (
 					"-lboost_chrono",
 					"-lmemcached",
diff --git a/example/ChaosPerformanceTester/main.cpp b/example/ChaosPerformanceTester/main.cpp
index e4beda7b2..bbf9ef4dc 100644
--- a/example/ChaosPerformanceTester/main.cpp
+++ b/example/ChaosPerformanceTester/main.cpp
@@ -1,6 +1,6 @@
 /*
  *	UIToolkitCMDLineExample.cpp
- *	!CHOAS
+ *	!CHAOS
  *	Created by Bisegni Claudio.
  *
  *    	Copyright 2012 INFN, National Institute of Nuclear Physics
@@ -94,7 +94,7 @@ int main (int argc, char* argv[] ) {
 			command_sequence.push_back(1);
 		}
 		device_network_address = new CNetworkAddress();
-		device_network_address->ipPort = ChaosUIToolkit::getInstance()->getGlobalConfigurationInstance()->getOption<std::string>(OPT_NODE_ADDRESS);
+		device_network_address->ip_port = ChaosUIToolkit::getInstance()->getGlobalConfigurationInstance()->getOption<std::string>(OPT_NODE_ADDRESS);
 		chaos::common::message::PerformanceNodeChannel *perf_channel = LLRpcApi::getInstance()->getNewPerformanceChannel(device_network_address);
 		chaos::common::direct_io::DirectIOPerformanceSession *session = NULL;
 		if(!perf_channel->getPerformanceSession(&session, timeout) && session) {
-- 
GitLab