diff --git a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
index 8d8a29205aa50bc425bcc779b2ffca55064e8d7e..acf4f58d1a3966001120a43e7f6e8e5678f86e69 100644
--- a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
+++ b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.ini
@@ -6,7 +6,7 @@
 name: Agilent Network Analyzer
 
 # The version string should be updated whenever changes are made to this config file
-version: 1.0
+version: 1.1.0
 
 # Name of folder containing the code defining a custom driver. Do not define this item
 # or leave it blank for any standard driver based on the built-in VISA interface.
diff --git a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
index 6f0da020c5080d3d8fb5153dee77ab4be6353037..1d19371a62ee4a47997ac1f387e2b2347b937314 100644
--- a/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
+++ b/Agilent_NetworkAnalyzer/Agilent_NetworkAnalyzer.py
@@ -2,8 +2,9 @@
 
 from VISA_Driver import VISA_Driver
 import numpy as np
+import time
 
-__version__ = "0.0.1"
+__version__ = "0.1.0"
 
 class Error(Exception):
     pass
@@ -104,30 +105,31 @@ class Driver(VISA_Driver):
                 # if not in continous mode, trig from computer
                 bWaitTrace = self.getValue('Wait for new trace')
                 bAverage = self.getValue('Average')
+                duration = (float(self.askAndLog("SENS:SWE:TIME?"))
+                * (self.getValue('# of averages') if bAverage else 1))
                 # wait for trace, either in averaging or normal mode
                 if bWaitTrace:
+                    self.writeAndLog(':ABOR;:TRIG:SOUR BUS;:INIT:CONT OFF;:INIT:IMM;')
                     if bAverage:
-                        # set channels 1-4 to set event when average complete (bit 1 start)
-                        self.writeAndLog(':SENS:AVER:CLE;:STAT:OPER:AVER1:ENAB 30;:ABOR;:SENS:AVER:CLE;')
-                    else:
-                        self.writeAndLog(':ABOR;:INIT:CONT OFF;:INIT:IMM;')
-                        self.writeAndLog('*OPC') 
+                        self.writeAndLog(':TRIG:AVER ON')
+                    self.writeAndLog(':TRIG:SING;')
+                    self.writeAndLog('*OPC')
                     # wait some time before first check
                     self.wait(0.03)
                     bDone = False
+                    start_time = time.time()
+
                     while (not bDone) and (not self.isStopped()):
                         # check if done
-                        if bAverage:
-                            sAverage = self.askAndLog('STAT:OPER:AVER1:COND?')
-                            bDone = int(sAverage)>0
-                        else:
-                            stb = int(self.askAndLog('*ESR?'))
-                            bDone = (stb & 1) > 0
+                        stb = int(self.askAndLog('*ESR?'))
+                        bDone = (stb & 1) > 0
                         if not bDone:
+                            #report progress
+                            self.reportProgress((time.time()-start_time)/duration)
                             self.wait(0.1)
                     # if stopped, don't get data
                     if self.isStopped():
-                        self.writeAndLog('*CLS;:INIT:CONT ON;')
+                        self.writeAndLog('*CLS;:TRIG:SOUR INT;:TRIG:AVER OFF;:ABOR;')
                         return []
                 # get data as float32, convert to numpy array
                 if self.getModel() in ('E5071C',):
@@ -137,8 +139,9 @@ class Driver(VISA_Driver):
                     # old parameter handing
                     self.write(':FORM REAL,32;CALC:DATA? SDATA', bCheckError=False)
                 sData = self.read(ignore_termination=True)
-                if bWaitTrace and not bAverage:
-                    self.writeAndLog(':INIT:CONT ON;')
+                if bWaitTrace:
+                    self.writeAndLog(':TRIG:SOUR INT;:TRIG:AVER OFF;:ABOR;')
+
                 # strip header to find # of points
                 i0 = sData.find(b'#')
                 nDig = int(sData[i0+1:i0+2])