diff --git a/src/EEHGMaster.py b/src/EEHGMaster.py
index baf62028cfcb048c03efdc2b4cc445d9586cce76..97c5f8c770231086e20e8fcbf8ac7ee61d95a722 100755
--- a/src/EEHGMaster.py
+++ b/src/EEHGMaster.py
@@ -836,6 +836,7 @@ class EEHGMaster(Device):
                 self.set_status('failed to connect to remote device')
 
         self.set_state(tango.DevState.ON)
+        self.set_status('Init ok, status ON')
 
         # PROTECTED REGION END #    //  EEHGMaster.init_device
 
@@ -1980,7 +1981,7 @@ class EEHGMaster(Device):
                 # self.error_stream('')
                 self.error_stream('failed to read R561')
                 self.set_state(tango.DevState.ALARM)
-                self.set_status('failed to read R561')
+                self.set_status('Alarm, failed to read R561')
                 
             self._r561_curr = valore
             
@@ -1993,7 +1994,7 @@ class EEHGMaster(Device):
             try:
                 if self.dispmagnet_device.read_attribute("State").value != tango.DevState.ON:
                     self.set_state(tango.DevState.ALARM)
-                    self.set_status('Dispersive mag. is off')
+                    self.set_status('Alarm, Dispersive mag. is off')
                     valore = 100.0 
                 else:
                     valore = self.dispmagnet_device.read_attribute("R56").value
@@ -2003,7 +2004,7 @@ class EEHGMaster(Device):
                 # self.error_stream('')
                 self.error_stream('failed to read R562')
                 self.set_state(tango.DevState.ALARM)
-                self.set_status('failed to read R562')
+                self.set_status('Alarm, failed to read R562')
                 
             self._r562_curr = valore
             
@@ -2079,16 +2080,16 @@ class EEHGMaster(Device):
 
             except tango.DevFailed:
                 self.set_state(tango.DevState.ALARM)
-                self.error_stream('seed device failed')
-                self.set_status('seed device failed')
+                self.error_stream('Alarm, seed device failed')
+                self.set_status('Alarm, seed device failed')
             except ValueError:
                 self.set_state(tango.DevState.ALARM)
                 self.error_stream('reading of seed device failed')
-                self.set_status('reading of seed device failed')
+                self.set_status('Alarm, reading of seed device failed')
 
         else:
             self.set_state(tango.DevState.ALARM)
-            self.set_status('seed device not initialized')
+            self.set_status('Alarm, seed device not initialized')
 
         #print(float(self.lambda_s1.get_properties().min_value) * 1.1)
 
@@ -2102,12 +2103,12 @@ class EEHGMaster(Device):
                 # self.error_stream('')
                 self.error_stream('failed to read waist 1')
                 self.set_state(tango.DevState.ALARM)
-                self.set_status('failed to read waist 1')
+                self.set_status('Alarm, failed to read waist 1')
             self._waist_s1 = valore
             
         else:
             self.set_state(tango.DevState.ALARM)
-            self.set_status('seed ccd1 device not initialized')
+            self.set_status('Alarm, seed ccd1 device not initialized')
 
         # leggo l'attributo waist s2
         if self.seedccd2_device:
@@ -2119,13 +2120,13 @@ class EEHGMaster(Device):
                 # self.error_stream('')
                 self.error_stream('failed to read waist 2')
                 self.set_state(tango.DevState.ALARM)
-                self.set_status('failed to read waist 2')
+                self.set_status('Alarm, failed to read waist 2')
                 
             self._waist_s2 = valore
             
         else:
             self.set_state(tango.DevState.ALARM)
-            self.set_status('seed ccd2 device not initialized')
+            self.set_status('Alarm, seed ccd2 device not initialized')
 
         pass
         # PROTECTED REGION END #    //  EEHGMaster.ReadFromField
@@ -2153,7 +2154,7 @@ class EEHGMaster(Device):
 #            self.delayline_device.write_attribute("R56", self._r561)
             self.dispmagnet_device.write_attribute("R56", self._r562)
         except tango.DevFailed:
-            self.error_stream('failed to Set R56s')
+            self.error_stream('Fault: failed to Set R56s')
             self.set_state(tango.DevState.FAULT)
             return -1
 
@@ -2192,12 +2193,13 @@ class EEHGMaster(Device):
             pass
             self.seedmaster_device.write_attribute("wavelength2", self._lambda_s2)
         except tango.DevFailed:
-            self.error_stream('failed to Set Seeds')
+            self.error_stream('Fault, failed to Set Seeds')
             self.set_state(tango.DevState.FAULT)
-            return
+            return -1
 
         self.set_state(tango.DevState.ON)
         self.set_status('back to ON')
+        return 0
         # PROTECTED REGION END #    //  EEHGMaster.ApplySeeds
 
     def is_ApplySeeds_allowed(self):
@@ -2246,7 +2248,8 @@ class EEHGMaster(Device):
         except tango.DevFailed:
             self.error_stream('failed to Set SuperGap')
             self.set_state(tango.DevState.FAULT)
-            return
+            self.set_status('Fault: failed to set SuperGap')
+            return -1
         sleep(1)
         try:
             pass
@@ -2254,15 +2257,17 @@ class EEHGMaster(Device):
         except tango.DevFailed as e:
             self.error_stream('failed to SuperGap Apply')
             self.set_state(tango.DevState.FAULT)
+            self.set_status('Fault: failed to set SuperGap')
             tango.Except.re_throw_exception(e, 'SuperGap Apply failed',
                                             'command_inout failed',
                                             'ApplyCalculatedValues')
-            return
+            return -1
 
 
         self.set_state(tango.DevState.ON)
-        self.set_status('back to ON')
-        
+        self.set_status('ready and ON')
+        return 0
+    
         # PROTECTED REGION END #    //  EEHGMaster.ApplyIDs
 
     def is_ApplyIDs_allowed(self):
@@ -2281,9 +2286,20 @@ class EEHGMaster(Device):
         :return:None
         """
         
-        self.ApplySeeds()
-        self.ApplyIDs()
-        self.ApplyR56s()
+        if self.ApplyR56s():
+            self.set_state(tango.DevState.FAULT)
+            self.set_status('Fault: failed to set R56')
+            return
+        
+        if self.ApplySeeds():
+            self.set_state(tango.DevState.FAULT)
+            self.set_status('Fault: failed to set Seeds')
+            return
+        
+        if self.ApplyIDs():
+            self.set_state(tango.DevState.FAULT)
+            self.set_status('Fault: failed to set IDs')
+            
         # PROTECTED REGION END #    //  EEHGMaster.ApplyAll
 
     def is_ApplyAll_allowed(self):
diff --git a/src/EEHGMaster.xmi b/src/EEHGMaster.xmi
index 1e0cc3e75aa1934e5dc6772cb892535dc0b513dd..181a9bdf90b7c44676943202bf14b9ee70921ffe 100644
--- a/src/EEHGMaster.xmi
+++ b/src/EEHGMaster.xmi
@@ -78,7 +78,6 @@
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
       <excludedStates>RUNNING</excludedStates>
       <excludedStates>MOVING</excludedStates>
-      <excludedStates>FAULT</excludedStates>
     </commands>
     <commands name="ReadFromField" description="reads from field the attribute `current` values" execMethod="read_from_field" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
       <argin description="">
@@ -89,6 +88,7 @@
       </argout>
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
       <excludedStates>RUNNING</excludedStates>
+      <excludedStates>MOVING</excludedStates>
     </commands>
     <commands name="ApplyR56s" description="Applica la soluzione sulle sezioni dispersive" execMethod="apply_r56s" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
       <argin description="">
@@ -149,7 +149,6 @@
       <writeExcludedStates>MOVING</writeExcludedStates>
       <writeExcludedStates>FAULT</writeExcludedStates>
       <writeExcludedStates>ALARM</writeExcludedStates>
-      <writeExcludedStates>UNKNOWN</writeExcludedStates>
     </attributes>
     <attributes name="n" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false">
       <dataType xsi:type="pogoDsl:ShortType"/>
@@ -174,7 +173,6 @@
       <writeExcludedStates>MOVING</writeExcludedStates>
       <writeExcludedStates>FAULT</writeExcludedStates>
       <writeExcludedStates>ALARM</writeExcludedStates>
-      <writeExcludedStates>UNKNOWN</writeExcludedStates>
     </attributes>
     <attributes name="n_fixed" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false">
       <dataType xsi:type="pogoDsl:BooleanType"/>
@@ -728,9 +726,6 @@
     <states name="ALARM" description="No solutions avaliable">
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
     </states>
-    <states name="UNKNOWN" description="Condizione in cui non si conosce li stato dei device sotto.">
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </states>
     <preferences docHome="./doc_html" makefileHome="/usr/local/tango-9.3.4/share/pogo/preferences"/>
   </classes>
 </pogoDsl:PogoSystem>