diff --git a/config/UNB2.yaml b/config/UNB2.yaml
index 7ba4245c941563ed6e794cb2a87a9c1f9788e94a..a457bbdce3fc3c32adf38ec9d1564f6a3fdcb4a3 100644
--- a/config/UNB2.yaml
+++ b/config/UNB2.yaml
@@ -111,7 +111,7 @@ variables:
      driver: GPIO
      mask: UNB2_mask
      width: 1
-     rw:  rw
+     rw:  ro
      dtype: boolean
      dim: 2
 
@@ -195,7 +195,7 @@ variables:
      scale: 0.0625 
      dim: 16
 
-   - name: UNB2_FPGA_DDR4_SLOT0_PART_NUMBER
+   - name: UNB2_FPGA_DDR4_SLOT_PART_NUMBER
      driver: switch_DDR4
      mask: UNB2_I2C_bus_DDR4_OK
      devreg:  [0x18.0x149,0x19.0x149]
@@ -214,7 +214,7 @@ variables:
      scale: 1.2207e-4 #2^-13
      dim: 8
 
-   - name: [UNB2_FPGA_POL_RXGXB_VOUT,UNB2_FPGA_POL_RXGXB_IOUT,UNB2_FPGA_POL_RXGXB_TEMP,UNB2_FPGA_POL_TXGXB_VOUT,UNB2_FPGA_POL_TXGXB_IOUT,PUNB2_OL_FPGA_TXGXB_TEMP]
+   - name: [UNB2_FPGA_POL_RXGXB_VOUT,UNB2_FPGA_POL_RXGXB_IOUT,UNB2_FPGA_POL_RXGXB_TEMP,UNB2_FPGA_POL_TXGXB_VOUT,UNB2_FPGA_POL_TXGXB_IOUT,UNB2_POL_FPGA_TXGXB_TEMP]
      driver: switch_FPGA_PS
      mask: UNB2_I2C_bus_FGPA_PS_OK
      devreg:  [0xE.0x8B,0xE.0x8C,0xE.0x8D,0xF.0x8B,0xF.0x8C,0xF.0x8D]
diff --git a/opcuaserv/yamlconfig.py b/opcuaserv/yamlconfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..bd2bf4481a610a08af41f529957438bd327a9f4b
--- /dev/null
+++ b/opcuaserv/yamlconfig.py
@@ -0,0 +1,42 @@
+import yaml
+import struct
+import time
+
+def Find(L,name,value):
+  for x in L:
+    if x[name]==value:
+        return x;
+  return False;
+
+
+def GetField(D,name,dev_number,default=None):
+    X=D.get(name,default)
+    return X[dev_number] if isinstance(X,list) else X;
+
+
+class yamlconfig():
+    def __init__(self,yamlfile='RCU'):
+        self.conf=yaml.load(open("config/"+yamlfile+'.yaml'))
+        var1=self.conf['variables']
+        N=len(var1)
+#        print([v['name'] for v in self.conf['variables']])
+        for i in range(N-1,-1,-1):
+            #print(var1[i])
+            if isinstance(var1[i]['name'],list):
+                for x,name in enumerate(var1[i]['name']):
+                    var2=var1[i].copy()
+                    var2['name']=name
+                    var2['devreg']=GetField(var1[i],'devreg',x)
+                    var2['scale']=GetField(var1[i],'scale',x,1)
+                    var1.append(var2)
+                    N+=1;
+                var1.remove(var1[i])
+                N-=1;
+#        print([[v['name'],v.get('devreg')] for v in var1])
+#        print(len(self.conf['variables']),N)
+        for i,v in enumerate(self.conf['variables']):
+            v['id']=i
+        for i,v in enumerate(self.conf['methods']):
+            v['id']=i
+
+    
diff --git a/opcuaserv/yamlreader.py b/opcuaserv/yamlreader.py
index 91563dc1142c74016a73edbefaaf156c2b181c59..f687dd9e56e45f93f56c467a25f96e86a542aaf2 100644
--- a/opcuaserv/yamlreader.py
+++ b/opcuaserv/yamlreader.py
@@ -1,11 +1,7 @@
 import yaml
 import struct
 import time
-def Find(L,name,value):
-  for x in L:
-    if x[name]==value:
-        return x;
-  return False;
+from opcuaserv.yamlconfig import *
 
 def bytes2int(bts):
    x=0;
@@ -21,13 +17,9 @@ def int2bytes(i):
    return [i]+b;
 
 
-class yamlreader():
+class yamlreader(yamlconfig):
     def __init__(self,i2cserver,yamlfile='RCU'):
-        self.conf=yaml.load(open("config/"+yamlfile+'.yaml'))
-        for i,v in enumerate(self.conf['variables']):
-            v['id']=i
-        for i,v in enumerate(self.conf['methods']):
-            v['id']=i
+        yamlconfig.__init__(self,yamlfile)
         self.server=i2cserver;
 
     
diff --git a/pypcc2.py b/pypcc2.py
index 054f2bb1430868ddb4e600302a0b620635603404..f5c6ae9ccaec7a5839ef793ba619a8eb99bbaa8f 100644
--- a/pypcc2.py
+++ b/pypcc2.py
@@ -14,6 +14,7 @@ parser = argparse.ArgumentParser()
 parser.add_argument("-s", "--simulator", help="Do not connect to I2c, but simulate behaviour.", action="store_true")
 parser.add_argument("-p", "--port", help="Port number to listen on [%(default)s].", type=int, default=4842)
 parser.add_argument("-l", "--loglevel", help="Log level [%(default)s].", type=str, choices=["DEBUG","INFO","WARNING","ERROR"], default="INFO")
+#parser.add_argument("-c", "--config", help="YAML config file.",type=str, action="store_true",default='RCU')
 args = parser.parse_args()
 
 # set log level
@@ -33,16 +34,16 @@ signal.signal(signal.SIGINT, signal_handler)
 
 #Start i2c processes as soon as possible to have minimum duplication
 logging.info("Start I2C processes")   
-I2Cports=['RCU']
+I2Cports=['UNB2']
 #I2Cports=[]
 threads=[]
 I2Cclients=[]
 for name in I2Cports:
     RCU_I2C=i2client.i2client(name=name)
-    thread1=i2cthread.start(*RCU_I2C.GetInfo())
-    threads.append(thread1)
+    if not(args.simulator):  
+        thread1=i2cthread.start(*RCU_I2C.GetInfo())
+        threads.append(thread1)
     I2Cclients.append(RCU_I2C)
-
 #Initialise OPCUA server
 logging.info("Initialised OPC-UA Server")   
 opcuaserv.InitServer(port=args.port)