diff --git a/EXAMPLE_start_caQtDM.sh b/EXAMPLE_start_caQtDM.sh
index 8c884e499bd2851475b837e166f991e25167955f..d6c15f96cd47893da02b0c3054f7d253d337d054 100755
--- a/EXAMPLE_start_caQtDM.sh
+++ b/EXAMPLE_start_caQtDM.sh
@@ -1,6 +1,10 @@
 #!/bin/bash
 
-export EPICS_APP=/APSshare/epics/synApps_5_7/support/xxx-5-7-1
+if [ -z "/APSshare/epics" ]; then
+  export EPICS_APP=/APSshare/epics/synApps_5_7/support/xxx-5-7-1
+else
+  export EPICS_APP=/usr/local/epics/synApps_5_8/support/xxx-5-8-3
+fi
 export EPICS_APP_UI_DIR=${EPICS_APP}/xxxApp/op/ui
 
 
@@ -42,45 +46,51 @@ eval $output
 # add support for modules defined by environment variables
 # modules are *appended* to the growing list of directories
 
+if [ "" == "${ADSIMDETECTOR}" ]; then
+  export ADSIMDETECTOR=${AREA_DETECTOR}/ADSimDetector-R2-4
+fi
+
 # ========  ================  ===========================
 # function  MODULE_VARIABLE   subdirectory with .ui files
 # ========  ================  ===========================
 addModule   EPICS_APP_UI_DIR
 addModule   ALIVE             ./aliveApp/op/ui
 addModule   AREA_DETECTOR     ./ADCore/ADApp/op/ui
-addModule   AREA_DETECTOR     ./ADCore/ADApp/op/ui/autoconvert
-addModule   ASYN	      ./opi/caqtdm
-addModule   AUTOSAVE	      ./asApp/op/ui
-addModule   BUSY	      ./busyApp/op/ui
-addModule   CALC	      ./calcApp/op/ui
-addModule   CAMAC	      ./camacApp/op/ui
+addModule   ADCORE            ./ADApp/op/ui/autoconvert
+addModule   ADSIMDETECTOR     ./simDetectorApp/op/ui/autoconvert
+addModule   ASYN	            ./opi/caqtdm
+addModule   AUTOSAVE	        ./asApp/op/ui
+addModule   BUSY	            ./busyApp/op/ui
+addModule   CALC	            ./calcApp/op/ui
+addModule   CAMAC	            ./camacApp/op/ui
 addModule   CAPUTRECORDER     ./caputRecorderApp/op/ui
-addModule   DAC128V	      ./dac128VApp/op/ui
-addModule   DELAYGEN	      ./delaygenApp/op/ui
+addModule   DAC128V	          ./dac128VApp/op/ui
+addModule   DELAYGEN	        ./delaygenApp/op/ui
 addModule   DEVIOCSTATS       ./op/ui
-addModule   DXP 	      ./dxpApp/op/ui
-addModule   IP  	      ./ipApp/op/ui
-addModule   IP330	      ./ip330App/op/ui
-addModule   IPUNIDIG	      ./ipUnidigApp/op/ui
-addModule   LOVE	      ./loveApp/op/ui
-addModule   MCA 	      ./mcaApp/op/ui
-addModule   MODBUS	      ./modbusApp/op/ui
-addModule   MOTOR	      ./motorApp/op/ui
-addModule   OPTICS	      ./opticsApp/op/ui
-addModule   QUADEM	      ./quadEMApp/op/ui
-addModule   SOFTGLUE	      ./softGlueApp/op/ui
-addModule   SSCAN	      ./sscanApp/op/ui
-addModule   STD 	      ./stdApp/op/ui
-addModule   VAC 	      ./vacApp/op/ui
-addModule   VME 	      ./vmeApp/op/ui
+addModule   DXP 	            ./dxpApp/op/ui
+addModule   IP  	            ./ipApp/op/ui
+addModule   IP330	            ./ip330App/op/ui
+addModule   IPUNIDIG	        ./ipUnidigApp/op/ui
+addModule   LOVE	            ./loveApp/op/ui
+addModule   MCA 	            ./mcaApp/op/ui
+addModule   MODBUS	          ./modbusApp/op/ui
+addModule   MOTOR	            ./motorApp/op/ui
+addModule   OPTICS	          ./opticsApp/op/ui
+addModule   QUADEM	          ./quadEMApp/op/ui
+addModule   SOFTGLUE	        ./softGlueApp/op/ui
+addModule   SSCAN	            ./sscanApp/op/ui
+addModule   STD 	            ./stdApp/op/ui
+addModule   VAC 	            ./vacApp/op/ui
+addModule   VME 	            ./vmeApp/op/ui
 # ========  ================  ===========================
 
 
 #######################################
 # optional: add support directories not associated with environment variables
 
-# QTDMDP=${QTDMDP}:/APSshare/uisys/sr/id
-
+if [ -z "/APSshare/caqtdm" ]; then
+  QTDMDP=${QTDMDP}:/APSshare/uisys/sr/id
+fi
 
 #######################################
 # Define CAQTDM_DISPLAY_PATH
@@ -137,15 +147,19 @@ cd ${EPICS_APP_UI_DIR}
 
 export MEDM_EXEC_LIST=
 # For drag-and-drop workaround at APS, need /APSshare/bin/xclip
-export PATH=${PATH}:/APSshare/bin
 export CAQTDM_EXEC_LIST='Probe;probe &P &:UI File;echo &A:PV Name(s);echo &P:Copy PV name; echo -n &P| xclip -i -sel clip:Paste PV name;caput &P `xclip -o -sel clip`'
 
 export START_PUTRECORDER=${EPICS_APP}/start_putrecorder
 export MACROS_PY=${EPICS_APP_UI_DIR}/../python/macros.py
 export EDITOR=nedit
-export QT_PLUGIN_PATH=/APSshare/caqtdm/plugins
-export LD_LIBRARY_PATH=/APSshare/caqtdm/lib
-export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/APSshare/epics/base-3.14.12.3/lib/linux-x86_64
+if [ -z "/APSshare/caqtdm" ]; then
+  export PATH=${PATH}:/APSshare/bin
+  export QT_PLUGIN_PATH=/APSshare/caqtdm/plugins
+  export LD_LIBRARY_PATH=/APSshare/caqtdm/lib
+  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/APSshare/epics/base-3.14.12.3/lib/linux-x86_64
+else
+  export QT_PLUGIN_PATH=/usr/local/epics/extensions/lib/linux-x86_64
+fi
 
 
 #######################################
@@ -157,13 +171,8 @@ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/APSshare/epics/base-3.14.12.3/lib/lin
 #######################################
 # start caQtDM
 #caQtDM -noMsg xxx.ui &
-caQtDM -style plastique -noMsg xxx.ui &
 
+# allow for command line option to specify the file to be opened
+caQtDM -style plastique -noMsg ${1:-xxx.ui}
+# TODO: what about ALL command line parameters?  "$*"
 
-########### SVN repository information ###################
-# $Date$
-# $Author$
-# $Revision$
-# $URL$
-# $Id$
-########### SVN repository information ###################
diff --git a/README.md b/README.md
index 0c0c0c3ff54d48fc9313a639bea93374f3de16fd..7af6c8665a13ee65ed4c50dbe8b55b76ff7c1d3f 100644
--- a/README.md
+++ b/README.md
@@ -8,3 +8,8 @@ converted from APS SVN repository: Fri Nov 20 18:04:37 CST 2015
 
 Regarding the license of tagged versions prior to synApps 4-5,
 refer to http://www.aps.anl.gov/bcda/synApps/license.php
+
+[Report an issue with XXX](https://github.com/epics-modules/xxx/issues/new?title=%20ISSUE%20NAME%20HERE&body=**Describe%20the%20issue**%0A%0A**Steps%20to%20reproduce**%0A1.%20Step%20one%0A2.%20Step%20two%0A3.%20Step%20three%0A%0A**Expected%20behaivour**%0A%0A**Actual%20behaviour**%0A%0A**Build%20Environment**%0AArchitecture:%0AEpics%20Base%20Version:%0ADependent%20Module%20Versions:&labels=bug)  
+[Request a feature](https://github.com/epics-modules/xxx/issues/new?title=%20FEATURE%20SHORT%20DESCRIPTION&body=**Feature%20Long%20Description**%0A%0A**Why%20should%20this%20be%20added?**%0A&labels=enhancement)
+
+* [HTML documentation](https://github.com/epics-modules/xxx/blob/master/documentation/README.md)
diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE
index 28a346647534465470f8b50e49d289fe4acd0ff8..b565dca25494ce44cd4571e0903085d11e37bfe8 100644
--- a/configure/CONFIG_SITE
+++ b/configure/CONFIG_SITE
@@ -38,3 +38,5 @@ HAVE_HDF5 = NO
 HAVE_SZIP = NO
 
 -include $(AREA_DETECTOR)/configure/CONFIG_SITE
+
+TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
diff --git a/configure/RELEASE b/configure/RELEASE
index 32b25b49b385fb026ac2a8c0aca5a1c93f4ca783..96da2da415628ae2593bce46b5754c9883254990 100644
--- a/configure/RELEASE
+++ b/configure/RELEASE
@@ -26,7 +26,7 @@
 ##############################################################################
 
 # Define the path to the synApps support directory and uncomment.
-SUPPORT=/corvette/home/epics/devel
+SUPPORT=/home/oxygen/MOONEY/epics/synAppsGIT/support
 -include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)
 
 # Specify the standard synApps configuration.
@@ -36,9 +36,10 @@ include $(SUPPORT)/configure/RELEASE
 -include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)
 -include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH) 
 
+TDS3000 = $(SUPPORT)/../nonSynAppsSupport/tds3000-2.4
+FLY = $(SUPPORT)/../nonSynAppsSupport/fly-0-0
+
 # For a local, custom configuration; copy $(SUPPORT)/configure/RELEASE
 # to this directory as the file MASTER_RELEASE, edit the file, comment out
 # the above include, and uncomment the following line.
 #include $(TOP)/configure/MASTER_RELEASE
-
-TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
diff --git a/documentation/README.md b/documentation/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..aa7672d9a87d2cc252310c1a3c1c6f4e77c34aa1
--- /dev/null
+++ b/documentation/README.md
@@ -0,0 +1,5 @@
+# HTML documentation
+
+* [vme_address.html](http://htmlpreview.github.com/?https://github.com/epics-modules/xxx/blob/master/documentation/vme_address.html)
+* [xxxKnownProblems.html](http://htmlpreview.github.com/?https://github.com/epics-modules/xxx/blob/master/documentation/xxxKnownProblems.html)
+* [xxxReleaseNotes.html](http://htmlpreview.github.com/?https://github.com/epics-modules/xxx/blob/master/documentation/xxxReleaseNotes.html)
diff --git a/iocBoot/iocxxx/softioc/xxx.sh b/iocBoot/iocxxx/softioc/xxx.sh
index e20b4c712597978ab0b6686dc0191da6e6891132..20c88f4ae86bc40a784ffa3da9bfeacd566f9f16 100755
--- a/iocBoot/iocxxx/softioc/xxx.sh
+++ b/iocBoot/iocxxx/softioc/xxx.sh
@@ -3,8 +3,8 @@
 # description: start/stop/restart an EPICS IOC in a screen session
 #
 
-# Manually set IOC_STARTUP_DIR if xxx.sh will reside somewhere other than iocxxx
-#!IOC_STARTUP_DIR=/home/username/epics/ioc/synApps/xxx/iocBoot/iocxxx
+# Manually set IOC_STARTUP_DIR if xxx.sh will reside somewhere other than softioc
+#!IOC_STARTUP_DIR=/home/username/epics/ioc/synApps/xxx/iocBoot/iocxxx/softioc
 
 # Set EPICS_HOST_ARCH if the env var isn't already set properly for this IOC
 #!EPICS_HOST_ARCH=linux-x86_64
@@ -45,14 +45,15 @@ SELECTION=$1
 
 if [ -z "$IOC_STARTUP_DIR" ]
 then
-    # If no startup dir is specified, assume this script resides in the IOC's startup directory
-    IOC_STARTUP_DIR="../$(${DIRNAME} ${SNAME})"
+    # If no startup dir is specified, use this script's directory
+    IOC_STARTUP_DIR=`dirname $0`
+    # see: http://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within#59916
 fi
 #!${ECHO} ${IOC_STARTUP_DIR}
 
 #####################################################################
 
-IOC_CMD="../../bin/${EPICS_HOST_ARCH}/${IOC_BINARY} st.cmd.Linux"
+IOC_CMD="${IOC_STARTUP_DIR}/../../../bin/${EPICS_HOST_ARCH}/${IOC_BINARY} ${IOC_STARTUP_DIR}/st.cmd"
 
 screenpid() {
         if [ -z ${SCREEN_PID} ] ; then
diff --git a/release.pl b/release.pl
index 78c803457902d640324e457dd9d3031bdf3a4fa6..daa25921fdf8acf8b0c2170f2f473f913c72c579 100644
--- a/release.pl
+++ b/release.pl
@@ -18,6 +18,7 @@
 # 01/29/08 rls Bug fix; "($macro) =" line is wrong.
 # 04/06/11 daa Add bash output format support.
 # 03/20/15 kcl Rewrite to use recursive function, allows in-place resolution of included files
+# 03/02/17 kmp Also look for macros in optional include files
 
 #
 #Version:       $Revision$
@@ -46,7 +47,7 @@ sub Parse
 			#test for "include" command
 			($prefix,$post) = /(.*)\s* (.*)/;
 			
-			if ($prefix eq "include")
+			if ($prefix eq "include" || $prefix eq "-include")
 			{
 				($prefix,$macro,$post) = /(.*)\s* \s*\$\((.*)\)(.*)/;
 				
diff --git a/setup_epics_common b/setup_epics_common
index b0d59a83c2412a94f34a9220aec6e7a664d67322..d280d508a0322f83f2dd3aced9caea7d2110e8d6 100644
--- a/setup_epics_common
+++ b/setup_epics_common
@@ -1,8 +1,15 @@
 #!/bin/csh -f
 
-# caller (typically: start_epics) MUST make these definitions
-# setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps_5_5/support/xxx
-# setenv EPICS_APP_ADL_DIR ${EPICS_APP}/xxxApp/op/adl
+# caller (typically: start_epics) MUST make this definition:
+# setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
+# and must make this definition if the app name isn't the directory name:
+# setenv EPICS_APP_NAME xxx
+
+if (! ${?EPICS_APP_NAME}) then
+	setenv EPICS_APP_NAME `basename ${EPICS_APP}`
+endif
+setenv EPICS_APP_ADL_DIR ${EPICS_APP}/${EPICS_APP_NAME}App/op/adl
+setenv EPICS_APP_UI_DIR ${EPICS_APP}/${EPICS_APP_NAME}App/op/ui
 
 set output = `perl $EPICS_APP/release.pl $EPICS_APP`
 $output
@@ -100,6 +107,14 @@ if ( ${?VME} ) then
 	setenv EDP ${EDP}:${VME}/vmeApp/op/adl
 endif
 
+if ( ${?TDS3000} ) then
+	setenv EDP ${EDP}:${TDS3000}/medm
+endif
+
+if ( ${?FLY} ) then
+	setenv EDP ${EDP}:${FLY}/flyApp/op/adl
+endif
+
 # APS accelerator-controls displays
 setenv EDP ${EDP}:/APSshare/adlsys/sr/id
 
@@ -110,9 +125,149 @@ setenv EPICS_DISPLAY_PATH ${EDP}:${EPICS_DISPLAY_PATH}
 endif
 
 if (! ${?MEDM_EXEC_LIST}) setenv MEDM_EXEC_LIST 'Probe;probe &P &'
+if (! ${?CAQTDM_EXEC_LIST}) setenv CAQTDM_EXEC_LIST 'Probe;probe &P &:UI File;echo &A:PV Name(s);echo &P:Copy PV name; echo -n &P| xclip -i -sel clip:Paste PV name;caput &P `xclip -o -sel clip`'
+
+#######################################
+# caQtDM
+
+# Prepare CAQTDM_DISPLAY_PATH
+# QTDMDP is temporary CAQTDM_DISPLAY_PATH
+#
+setenv QTDMDP  .
+if ( ${?EPICS_APP_UI_DIR} ) then
+	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}
+	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}/autoconvert
+endif
+if ( ${?AREA_DETECTOR} ) then
+	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui/autoconvert
+endif
+if ( ${?ADCORE} ) then
+	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui/autoconvert
+endif
+if ( ${?ADSIMDETECTOR} ) then
+	setenv QTDMDP ${QTDMDP}:${ADSIMDETECTOR}/simDetectorApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${ADSIMDETECTOR}/simDetectorApp/op/ui/autoconvert
+endif
+if ( ${?ASYN} ) then
+	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm
+	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm/autoconvert
+endif
+if ( ${?ALIVE} ) then
+	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui/autoconvert
+endif
+if ( ${?AUTOSAVE} ) then
+	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui/autoconvert
+endif
+if ( ${?BUSY} ) then
+	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui/autoconvert
+endif
+if ( ${?CALC} ) then
+	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui/autoconvert
+endif
+if ( ${?CAMAC} ) then
+	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui/autoconvert
+endif
+if ( ${?CAPUTRECORDER} ) then
+	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui/autoconvert
+endif
+if ( ${?DAC128V} ) then
+	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui/autoconvert
+endif
+if ( ${?DELAYGEN} ) then
+	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui/autoconvert
+endif
+if ( ${?DEVIOCSTATS} ) then
+	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui
+	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui/autoconvert
+endif
+if ( ${?DXP} ) then
+	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui/autoconvert
+endif
+if ( ${?IP} ) then
+	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui/autoconvert
+endif
+if ( ${?IP330} ) then
+	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui
+	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui/autoconvert
+endif
+if ( ${?IPUNIDIG} ) then
+	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui/autoconvert
+endif
+if ( ${?LOVE} ) then
+	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui/autoconvert
+endif
+if ( ${?MCA} ) then
+	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui/autoconvert
+endif
+if ( ${?MEASCOMP} ) then
+	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui/autoconvert
+endif
+if ( ${?MODBUS} ) then
+	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui/autoconvert
+endif
+if ( ${?MOTOR} ) then
+	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui/autoconvert
+endif
+if ( ${?OPTICS} ) then
+	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui/autoconvert
+endif
+if ( ${?QUADEM} ) then
+	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui/autoconvert
+endif
+if ( ${?SOFTGLUE} ) then
+	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui/autoconvert
+endif
+if ( ${?SSCAN} ) then
+	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui/autoconvert
+endif
+if ( ${?STD} ) then
+	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui/autoconvert
+endif
+if ( ${?VAC} ) then
+	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui/autoconvert
+endif
+if ( ${?VME} ) then
+	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui
+	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui/autoconvert
+endif
 
-#setenv EPICS_CA_ADDR_LIST "164.54.53.126"
+setenv QTDMDP ${QTDMDP}:/APSshare/adlsys/sr/id
+
+if (! ${?CAQTDM_DISPLAY_PATH}) then
+	setenv CAQTDM_DISPLAY_PATH ${QTDMDP}
+else
+	setenv CAQTDM_DISPLAY_PATH ${QTDMDP}:${CAQTDM_DISPLAY_PATH}
+endif
 
 # This should agree with the environment variable set by the ioc
 # see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd
-setenv EPICS_CA_MAX_ARRAY_BYTES 64008
+#setenv EPICS_CA_MAX_ARRAY_BYTES 2001000
+setenv EPICS_CA_MAX_ARRAY_BYTES 10000100
+
+# caputRecorder
+setenv START_PUTRECORDER ${EPICS_APP}/start_putrecorder
+setenv EDITOR nedit
diff --git a/start_caQtDM b/start_caQtDM
index 748ecb5ec68ced8154575a218b3a26fba9752c6f..c4d6decb6f75890f89c82c8201fa9d9042f31094 100755
--- a/start_caQtDM
+++ b/start_caQtDM
@@ -1,131 +1,18 @@
 #!/bin/csh -f
 
+setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
+setenv EPICS_APP_NAME xxx
+
+# define environment variables for MEDM, caQtDM, and Probe
+source ./setup_epics_common
+
 # For drag-and-drop workaround:
-# need /APSshare/bin/xclip
+# get xclip in path
 setenv PATH ${PATH}:/APSshare/bin
 unsetenv MEDM_EXEC_LIST
 setenv CAQTDM_EXEC_LIST 'Probe;probe &P &:UI File;echo &A:PV Name(s);echo &P:Copy PV name; echo -n &P| xclip -i -sel clip:Paste PV name;caput &P `xclip -o -sel clip`'
 
-setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
-setenv EPICS_APP_UI_DIR ${EPICS_APP}/xxxApp/op/ui
-
-set output = `perl $EPICS_APP/release.pl $EPICS_APP`
-$output
-
-#######################################
-# Prepare CAQTDM_DISPLAY_PATH
-# QTDMDP is temporary CAQTDM_DISPLAY_PATH
-#
-setenv QTDMDP  .
-if ( ${?EPICS_APP_UI_DIR} ) then
-	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}
-endif
-if ( ${?AREA_DETECTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui
-endif
-if ( ${?ADCORE} ) then
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui
-endif
-if ( ${?ASYN} ) then
-	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm
-endif
-if ( ${?ALIVE} ) then
-	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui
-endif
-if ( ${?AUTOSAVE} ) then
-	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui
-endif
-if ( ${?BUSY} ) then
-	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui
-endif
-if ( ${?CALC} ) then
-	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui
-endif
-if ( ${?CAMAC} ) then
-	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui
-endif
-if ( ${?CAPUTRECORDER} ) then
-	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui
-endif
-if ( ${?DAC128V} ) then
-	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui
-endif
-if ( ${?DELAYGEN} ) then
-	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui
-endif
-if ( ${?DEVIOCSTATS} ) then
-	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui
-endif
-if ( ${?DXP} ) then
-	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui
-endif
-if ( ${?IP} ) then
-	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui
-endif
-if ( ${?IP330} ) then
-	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui
-endif
-if ( ${?IPUNIDIG} ) then
-	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui
-endif
-if ( ${?LOVE} ) then
-	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui
-endif
-if ( ${?MCA} ) then
-	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui
-endif
-if ( ${?MEASCOMP} ) then
-	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui
-endif
-if ( ${?MODBUS} ) then
-	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui
-endif
-if ( ${?MOTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui
-endif
-if ( ${?OPTICS} ) then
-	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui
-endif
-if ( ${?QUADEM} ) then
-	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui
-endif
-if ( ${?SOFTGLUE} ) then
-	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui
-endif
-if ( ${?SSCAN} ) then
-	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui
-endif
-if ( ${?STD} ) then
-	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui
-endif
-if ( ${?VAC} ) then
-	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui
-endif
-if ( ${?VME} ) then
-	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui
-endif
-
-setenv QTDMDP ${QTDMDP}:/APSshare/uisys/sr/id
-
-if (! ${?CAQTDM_DISPLAY_PATH}) then
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}
-else
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}:${CAQTDM_DISPLAY_PATH}
-endif
-
-# This should agree with the environment variable set by the ioc
-setenv EPICS_CA_MAX_ARRAY_BYTES 64008
-# for areaDetector
-#setenv EPICS_CA_MAX_ARRAY_BYTES 2000100
-
 cd ${EPICS_APP_UI_DIR}
 
-setenv START_PUTRECORDER ${EPICS_APP}/start_putrecorder
-setenv MACROS_PY ${EPICS_APP_UI_DIR}/../python/macros.py
-setenv EDITOR nedit
-
-setenv LD_LIBRARY_PATH /APSshare/caqtdm/lib:/APSshare/epics/base-3.14.12.3/lib/linux-x86_64
-setenv QT_PLUGIN_PATH /APSshare/caqtdm/plugins
-alias caQtDM /APSshare/caqtdm/bin/caQtDM
-
-caQtDM -noMsg xxx.ui&
+alias caQtDM /APSshare/bin/caQtDM
+caQtDM -noMsg ${EPICS_APP_NAME}.ui&
diff --git a/start_caQtDM-3-8-10_APSshare b/start_caQtDM-3-8-10_APSshare
deleted file mode 100755
index f8d9c3bdf8841cfda85514c4d5de548690bb02dd..0000000000000000000000000000000000000000
--- a/start_caQtDM-3-8-10_APSshare
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/bin/csh -f
-
-setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
-setenv EPICS_APP_UI_DIR ${EPICS_APP}/xxxApp/op/ui
-
-set output = `perl $EPICS_APP/release.pl $EPICS_APP`
-$output
-
-#######################################
-# Prepare CAQTDM_DISPLAY_PATH
-# QTDMDP is temporary CAQTDM_DISPLAY_PATH
-#
-setenv QTDMDP  .
-if ( ${?EPICS_APP_UI_DIR} ) then
-	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}
-endif
-if ( ${?AREA_DETECTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui
-endif
-if ( ${?ADCORE} ) then
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui/autoconvert
-endif
-if ( ${?ASYN} ) then
-	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm
-endif
-if ( ${?ALIVE} ) then
-	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui
-endif
-if ( ${?AUTOSAVE} ) then
-	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui
-endif
-if ( ${?BUSY} ) then
-	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui
-endif
-if ( ${?CALC} ) then
-	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui
-endif
-if ( ${?CAMAC} ) then
-	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui
-endif
-if ( ${?CAPUTRECORDER} ) then
-	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui
-endif
-if ( ${?DAC128V} ) then
-	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui
-endif
-if ( ${?DELAYGEN} ) then
-	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui
-endif
-if ( ${?DEVIOCSTATS} ) then
-	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui
-endif
-if ( ${?DXP} ) then
-	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui
-endif
-if ( ${?IP} ) then
-	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui
-endif
-if ( ${?IP330} ) then
-	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui
-endif
-if ( ${?IPUNIDIG} ) then
-	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui
-endif
-if ( ${?LOVE} ) then
-	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui
-endif
-if ( ${?MCA} ) then
-	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui
-endif
-if ( ${?MEASCOMP} ) then
-	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui
-endif
-if ( ${?MODBUS} ) then
-	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui
-endif
-if ( ${?MOTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui
-endif
-if ( ${?OPTICS} ) then
-	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui
-endif
-if ( ${?QUADEM} ) then
-	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui
-endif
-if ( ${?SOFTGLUE} ) then
-	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui
-endif
-if ( ${?SSCAN} ) then
-	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui
-endif
-if ( ${?STD} ) then
-	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui
-endif
-if ( ${?VAC} ) then
-	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui
-endif
-if ( ${?VME} ) then
-	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui
-endif
-
-setenv QTDMDP ${QTDMDP}:/APSshare/uisys/sr/id
-
-if (! ${?CAQTDM_DISPLAY_PATH}) then
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}
-else
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}:${CAQTDM_DISPLAY_PATH}
-endif
-
-# This should agree with the environment variable set by the ioc
-# see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd
-#setenv EPICS_CA_MAX_ARRAY_BYTES 64008
-# for areaDetector
-setenv EPICS_CA_MAX_ARRAY_BYTES 2000100
-
-cd ${EPICS_APP_UI_DIR}
-
-setenv START_PUTRECORDER ${EPICS_APP}/start_putrecorder
-setenv MACROS_PY ${EPICS_APP_UI_DIR}/../python/macros.py
-setenv EDITOR nedit
-
-/APSshare/bin/caQtDM-3-8-10 xxx.ui&
-
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan1" -dg +500+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan2" -dg +100+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,M=m2" -dg 1x1+1000+300 motorx.ui
diff --git a/start_caQtDM-4.0.0_APSshare b/start_caQtDM-4.0.0_APSshare
deleted file mode 100755
index cce37e363f86edbe7c9db9e99210c2e455146bf0..0000000000000000000000000000000000000000
--- a/start_caQtDM-4.0.0_APSshare
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/bin/csh -f
-
-setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
-setenv EPICS_APP_UI_DIR ${EPICS_APP}/xxxApp/op/ui
-
-set output = `perl $EPICS_APP/release.pl $EPICS_APP`
-$output
-
-#######################################
-# Prepare CAQTDM_DISPLAY_PATH
-# QTDMDP is temporary CAQTDM_DISPLAY_PATH
-#
-setenv QTDMDP  .
-if ( ${?EPICS_APP_UI_DIR} ) then
-	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}
-endif
-if ( ${?AREA_DETECTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui
-endif
-if ( ${?ADCORE} ) then
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui/autoconvert
-endif
-if ( ${?ASYN} ) then
-	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm
-endif
-if ( ${?ALIVE} ) then
-	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui
-endif
-if ( ${?AUTOSAVE} ) then
-	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui
-endif
-if ( ${?BUSY} ) then
-	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui
-endif
-if ( ${?CALC} ) then
-	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui
-endif
-if ( ${?CAMAC} ) then
-	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui
-endif
-if ( ${?CAPUTRECORDER} ) then
-	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui
-endif
-if ( ${?DAC128V} ) then
-	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui
-endif
-if ( ${?DELAYGEN} ) then
-	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui
-endif
-if ( ${?DEVIOCSTATS} ) then
-	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui
-endif
-if ( ${?DXP} ) then
-	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui
-endif
-if ( ${?IP} ) then
-	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui
-endif
-if ( ${?IP330} ) then
-	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui
-endif
-if ( ${?IPUNIDIG} ) then
-	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui
-endif
-if ( ${?LOVE} ) then
-	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui
-endif
-if ( ${?MCA} ) then
-	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui
-endif
-if ( ${?MEASCOMP} ) then
-	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui
-endif
-if ( ${?MODBUS} ) then
-	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui
-endif
-if ( ${?MOTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui
-endif
-if ( ${?OPTICS} ) then
-	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui
-endif
-if ( ${?QUADEM} ) then
-	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui
-endif
-if ( ${?SOFTGLUE} ) then
-	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui
-endif
-if ( ${?SSCAN} ) then
-	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui
-endif
-if ( ${?STD} ) then
-	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui
-endif
-if ( ${?VAC} ) then
-	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui
-endif
-if ( ${?VME} ) then
-	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui
-endif
-
-setenv QTDMDP ${QTDMDP}:/APSshare/uisys/sr/id
-
-if (! ${?CAQTDM_DISPLAY_PATH}) then
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}
-else
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}:${CAQTDM_DISPLAY_PATH}
-endif
-
-# This should agree with the environment variable set by the ioc
-# see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd
-#setenv EPICS_CA_MAX_ARRAY_BYTES 64008
-# for areaDetector
-setenv EPICS_CA_MAX_ARRAY_BYTES 2000100
-
-cd ${EPICS_APP_UI_DIR}
-
-setenv START_PUTRECORDER ${EPICS_APP}/start_putrecorder
-setenv EDITOR nedit
-
-alias caQtDM /APSshare/bin/caQtDM-4.0.0
-caQtDM xxx.ui&
-
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan1" -dg +500+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan2" -dg +100+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,M=m2" -dg 1x1+1000+300 motorx.ui
diff --git a/start_caQtDM_APSshare b/start_caQtDM_APSshare
deleted file mode 100755
index 2e09d9468a0faf368ab2454e4e94d84197693185..0000000000000000000000000000000000000000
--- a/start_caQtDM_APSshare
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/csh -f
-
-# For drag-and-drop workaround:
-#alias xclip /APSshare/bin/xclip
-setenv PATH ${PATH}:/APSshare/bin
-unsetenv MEDM_EXEC_LIST
-setenv CAQTDM_EXEC_LIST 'Probe;probe &P &:UI File;echo &A:PV Name(s);echo &P:Copy PV name; echo -n &P| xclip -i -sel clip:Paste PV name;caput &P `xclip -o -sel clip`'
-
-setenv EPICS_APP /home/oxygen/MOONEY/epics/synApps/support/xxx
-setenv EPICS_APP_UI_DIR ${EPICS_APP}/xxxApp/op/ui
-
-set output = `perl $EPICS_APP/release.pl $EPICS_APP`
-$output
-
-#######################################
-# Prepare CAQTDM_DISPLAY_PATH
-# QTDMDP is temporary CAQTDM_DISPLAY_PATH
-#
-setenv QTDMDP  .
-if ( ${?EPICS_APP_UI_DIR} ) then
-	setenv QTDMDP ${QTDMDP}:${EPICS_APP_UI_DIR}
-endif
-if ( ${?AREA_DETECTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${AREA_DETECTOR}/ADApp/op/ui
-endif
-if ( ${?ADCORE} ) then
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui
-	setenv QTDMDP ${QTDMDP}:${ADCORE}/ADApp/op/ui/autoconvert
-endif
-if ( ${?ASYN} ) then
-	setenv QTDMDP ${QTDMDP}:${ASYN}/opi/caqtdm
-endif
-if ( ${?ALIVE} ) then
-	setenv QTDMDP ${QTDMDP}:${ALIVE}/aliveApp/op/ui
-endif
-if ( ${?AUTOSAVE} ) then
-	setenv QTDMDP ${QTDMDP}:${AUTOSAVE}/asApp/op/ui
-endif
-if ( ${?BUSY} ) then
-	setenv QTDMDP ${QTDMDP}:${BUSY}/busyApp/op/ui
-endif
-if ( ${?CALC} ) then
-	setenv QTDMDP ${QTDMDP}:${CALC}/calcApp/op/ui
-endif
-if ( ${?CAMAC} ) then
-	setenv QTDMDP ${QTDMDP}:${CAMAC}/camacApp/op/ui
-endif
-if ( ${?CAPUTRECORDER} ) then
-	setenv QTDMDP ${QTDMDP}:${CAPUTRECORDER}/caputRecorderApp/op/ui
-endif
-if ( ${?DAC128V} ) then
-	setenv QTDMDP ${QTDMDP}:${DAC128V}/dac128VApp/op/ui
-endif
-if ( ${?DELAYGEN} ) then
-	setenv QTDMDP ${QTDMDP}:${DELAYGEN}/delaygenApp/op/ui
-endif
-if ( ${?DEVIOCSTATS} ) then
-	setenv QTDMDP ${QTDMDP}:${DEVIOCSTATS}/op/ui
-endif
-if ( ${?DXP} ) then
-	setenv QTDMDP ${QTDMDP}:${DXP}/dxpApp/op/ui
-endif
-if ( ${?IP} ) then
-	setenv QTDMDP ${QTDMDP}:${IP}/ipApp/op/ui
-endif
-if ( ${?IP330} ) then
-	setenv QTDMDP ${QTDMDP}:${IP330}/ip330App/op/ui
-endif
-if ( ${?IPUNIDIG} ) then
-	setenv QTDMDP ${QTDMDP}:${IPUNIDIG}/ipUnidigApp/op/ui
-endif
-if ( ${?LOVE} ) then
-	setenv QTDMDP ${QTDMDP}:${LOVE}/loveApp/op/ui
-endif
-if ( ${?MCA} ) then
-	setenv QTDMDP ${QTDMDP}:${MCA}/mcaApp/op/ui
-endif
-if ( ${?MEASCOMP} ) then
-	setenv QTDMDP ${QTDMDP}:${MEASCOMP}/measCompApp/op/ui
-endif
-if ( ${?MODBUS} ) then
-	setenv QTDMDP ${QTDMDP}:${MODBUS}/modbusApp/op/ui
-endif
-if ( ${?MOTOR} ) then
-	setenv QTDMDP ${QTDMDP}:${MOTOR}/motorApp/op/ui
-endif
-if ( ${?OPTICS} ) then
-	setenv QTDMDP ${QTDMDP}:${OPTICS}/opticsApp/op/ui
-endif
-if ( ${?QUADEM} ) then
-	setenv QTDMDP ${QTDMDP}:${QUADEM}/quadEMApp/op/ui
-endif
-if ( ${?SOFTGLUE} ) then
-	setenv QTDMDP ${QTDMDP}:${SOFTGLUE}/softGlueApp/op/ui
-endif
-if ( ${?SSCAN} ) then
-	setenv QTDMDP ${QTDMDP}:${SSCAN}/sscanApp/op/ui
-endif
-if ( ${?STD} ) then
-	setenv QTDMDP ${QTDMDP}:${STD}/stdApp/op/ui
-endif
-if ( ${?VAC} ) then
-	setenv QTDMDP ${QTDMDP}:${VAC}/vacApp/op/ui
-endif
-if ( ${?VME} ) then
-	setenv QTDMDP ${QTDMDP}:${VME}/vmeApp/op/ui
-endif
-
-setenv QTDMDP ${QTDMDP}:/APSshare/uisys/sr/id
-
-if (! ${?CAQTDM_DISPLAY_PATH}) then
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}
-else
-setenv CAQTDM_DISPLAY_PATH ${QTDMDP}:${CAQTDM_DISPLAY_PATH}
-endif
-
-# This should agree with the environment variable set by the ioc
-# see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd
-#setenv EPICS_CA_MAX_ARRAY_BYTES 64008
-# for areaDetector
-setenv EPICS_CA_MAX_ARRAY_BYTES 2000100
-
-cd ${EPICS_APP_UI_DIR}
-
-setenv START_PUTRECORDER ${EPICS_APP}/start_putrecorder
-setenv MACROS_PY ${EPICS_APP_UI_DIR}/../python/macros.py
-setenv EDITOR nedit
-
-setenv QT_PLUGIN_PATH /APSshare/caqtdm/lib:/APSshare/caqtdm/plugins
-alias caQtDM /APSshare/caqtdm/bin/caQtDM
-
-caQtDM xxx.ui&
-
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan1" -dg +500+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,S=scan2" -dg +100+300 scan.ui
-#sleep 1
-#caQtDM -attach -macro "P=xxx:,M=m2" -dg 1x1+1000+300 motorx.ui
diff --git a/start_epics_xxx.bash b/start_epics_xxx.bash
index 0ad5468ce287ca55f5713074accf783e821715d3..c503700e8dfc2c61abbc5ffae111876dd5120d34 100755
--- a/start_epics_xxx.bash
+++ b/start_epics_xxx.bash
@@ -40,7 +40,7 @@ append_EDP  ${QUADEM}/quadEMApp/op/adl
 append_EDP  ${SSCAN}/sscanApp/op/adl
 append_EDP  ${STD}/stdApp/op/adl
 append_EDP  ${VME}/vmeApp/op/adl
-append_EDP  ${ASYN}/medm
+append_EDP  ${ASYN}/opi/medm
 append_EDP  ${VAC}/vacApp/op/adl
 append_EDP  ${SOFTGLUE}/softGlueApp/op/adl
 
diff --git a/xxxApp/op/adl/xxx.adl b/xxxApp/op/adl/xxx.adl
index 5bfbc25213c8ca741b47eb83cf6a66635a706889..74c7e92d70110d387db820043f96bf580976d6ab 100644
--- a/xxxApp/op/adl/xxx.adl
+++ b/xxxApp/op/adl/xxx.adl
@@ -1,14 +1,14 @@
 
 file {
-	name="/home/oxygen25/DOHNARMS/svn_pub/xxx/trunk/xxxApp/op/adl/xxx.adl"
+	name="/home/oxygen/MOONEY/epics/synApps/support/xxx/xxxApp/op/adl/xxx.adl"
 	version=030107
 }
 display {
 	object {
-		x=1183
+		x=1145
 		y=25
 		width=440
-		height=180
+		height=200
 	}
 	clr=64
 	bclr=1
@@ -139,6 +139,11 @@ display {
 		name="ASRPmirrorTable.adl"
 		args="P=xxx:,TBL=mt1,VERT=xxx:m7,PITCH=xxx:m8"
 	}
+	display[10] {
+		label="Table1 soft (S)"
+		name="table_soft.adl"
+		args="P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6"
+	}
 	clr=0
 	bclr=17
 	label="-Tables"
@@ -806,12 +811,12 @@ display {
 	display[0] {
 		label="orientation matrix"
 		name="orient.adl"
-		args="P=xxx:,O=_0,PM=xxx:,mTTH=SM1,mTH=SM2,mCHI=SM3,mPHI=SM4"
+		args="P=xxx:,O=_0,PM=xxx:,mTTH=m9,mTH=m10,mCHI=m11,mPHI=m12"
 	}
 	display[1] {
 		label="orient9"
 		name="orient9.adl"
-		args="P=xxx:,PM=xxx:,mTTH=SM1,mTH=SM2,mCHI=SM3,mPHI=SM4"
+		args="P=xxx:,PM=xxx:,mTTH=m9,mTH=m10,mCHI=m11,mPHI=m12"
 	}
 	clr=0
 	bclr=17
@@ -1196,6 +1201,11 @@ composite {
 		name="asynOctet.adl"
 		args="P=xxx:,R=asyn_8"
 	}
+	display[8] {
+		label="asyn record serialBiSS"
+		name="asynOctet.adl"
+		args="P=xxx:,R=BiSS"
+	}
 	clr=0
 	bclr=17
 	label="-serial"
@@ -1231,7 +1241,7 @@ composite {
 	display[1] {
 		label="CoarseFine"
 		name="CoarseFineMotor.adl"
-		args="P=xxx:cf1:,M=MOT,PM=xxx:,CM=m7,FM=m8"
+		args="P=xxx:cf1:,M=MOT,PM=xxx:,CM=m1,FM=m2"
 	}
 	clr=0
 	bclr=17
@@ -1588,27 +1598,6 @@ composite {
 	bclr=17
 	label="-ADC"
 }
-"related display" {
-	object {
-		x=350
-		y=60
-		width=70
-		height=20
-	}
-	display[1] {
-		label="OctupoleRamp"
-		name="OctupoleRamp.adl"
-		args="P=xxx:,Q=octupole:"
-	}
-	display[2] {
-		label="temp"
-		name="octupoleTempRead.adl"
-		args="P=xxx:,Q=Oct:"
-	}
-	clr=0
-	bclr=17
-	label="-octupole"
-}
 "related display" {
 	object {
 		x=280
@@ -1672,6 +1661,11 @@ composite {
 		name="simDetector.adl"
 		args="P=xxx:, R=SIM1:cam2:"
 	}
+	display[4] {
+		label="AD Top (prebuilts)"
+		name="ADTop.adl"
+		args=""
+	}
 	clr=0
 	bclr=63
 	label="-AD simDet"
@@ -1724,27 +1718,6 @@ composite {
 	bclr=17
 	label="-timer"
 }
-"related display" {
-	object {
-		x=210
-		y=160
-		width=70
-		height=20
-	}
-	display[3] {
-		label="shutterDo"
-		name="shutterDo.adl"
-		args="P=xxx:,Q=s2:,SHUTTER_STATUS=xxx:sim2:B_SHTRS_CLOSED,OPEN_PV=xxx:sim2:open,CLOSE_PV=xxx:sim2:close"
-	}
-	display[4] {
-		label="shutterSim"
-		name="shutterSim.adl"
-		args="P=xxx:,Q=sim2:,SHUTTER_STATUS=xxx:sim2:B_SHTRS_CLOSED,OPEN_PV=xxx:sim2:openCmd,CLOSE_PV=xxx:sim2:closeCmd"
-	}
-	clr=0
-	bclr=17
-	label="-shutterDo"
-}
 "related display" {
 	object {
 		x=280
@@ -1773,9 +1746,9 @@ composite {
 		args="P=xxx:"
 	}
 	display[4] {
-		label="muir"
-		name="yySseq.adl"
-		args="P=xxx:,S=PresetHistoryAdd"
+		label="SlewScan"
+		name="slew.adl"
+		args="P=xxx:,M=m2,MCS=3820:"
 	}
 	display[5] {
 		label="tomography fly"
@@ -1798,24 +1771,24 @@ composite {
 		args="P=xxx:,Q=PSOFly:"
 	}
 	display[9] {
-		label="calcTest"
-		name="calcTest.adl"
-		args="P=xxx:"
+		label="encoder Fly"
+		name="encoderFly.adl"
+		args="P=xxx:,Q=eFly:"
 	}
 	display[10] {
-		label="interlaceFly"
-		name="interlaceFly.adl"
-		args="P=xxx:,Q=iFly:,QT=tableFly:"
+		label="encoderInterlaceFly"
+		name="encoderInterlaceFly.adl"
+		args="P=xxx:,Q=iFly:,FLY=xxx:eFly:"
 	}
 	display[11] {
-		label="compressGain"
-		name="compress.adl"
-		args="P=xxx:,Q=gain"
+		label="multExposePosFilt"
+		name="multExposePosFilt.adl"
+		args="P=xxx:,Q=mxpf:"
 	}
 	display[12] {
-		label="tablePSOFly"
-		name="tablePSOFly.adl"
-		args="P=xxx:,Q=tableFly:"
+		label="multExposePos"
+		name="multExposePos.adl"
+		args="P=xxx:,Q=mxp:"
 	}
 	display[13] {
 		label="Security Control"
@@ -1827,6 +1800,11 @@ composite {
 		name="configMenu.adl"
 		args="P=xxx:,CONFIG=waveformTypes"
 	}
+	display[15] {
+		label="recordPV"
+		name="recordPV.adl"
+		args="P=xxx:,Q=recPV:,R=PV1"
+	}
 	clr=0
 	bclr=17
 	label="-test"
@@ -1900,7 +1878,7 @@ composite {
 		args="P=xxx:"
 	}
 	display[6] {
-		label="user calcOuts"
+		label="user calcOuts 1-10"
 		name="userCalcOuts10.adl"
 		args="P=xxx:"
 	}
@@ -1935,21 +1913,215 @@ composite {
 		args="P=xxx:,N1=11,N2=12,N3=13,N4=14,N5=15,N6=16,N7=17,N8=18,N9=19,N10=20"
 	}
 	display[13] {
+		label="user calcs 11-20"
+		name="userCalcs10more.adl"
+		args="P=xxx:,N1=11,N2=12,N3=13,N4=14,N5=15,N6=16,N7=17,N8=18,N9=19,N10=20"
+	}
+	display[14] {
 		label="busyRecord"
 		name="xxBusyRecord.adl"
 		args="P=xxx:,R=mybusy"
 	}
+	display[15] {
+		label="global enable"
+		name="userCalcsGlobalEnable.adl"
+		args="P=xxx:"
+	}
+	clr=0
+	bclr=17
+	label="-userCalc"
+}
+"related display" {
+	object {
+		x=350
+		y=60
+		width=70
+		height=20
+	}
+	display[0] {
+		label="Agilent 33220A"
+		name="Agilent_33220A_test1.adl"
+		args="P=xxx:,S=1"
+	}
+	clr=0
+	bclr=17
+	label="-AgilentWG"
+}
+"related display" {
+	object {
+		x=0
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="encoderFly"
+		name="encoderFly.adl"
+		args="P=xxx:,Q=eFly:"
+	}
+	display[1] {
+		label="encoderInterlaceFly"
+		name="encoderInterlaceFly.adl"
+		args="P=xxx:,Q=iFly:,FLY=xxx:eFly:"
+	}
+	display[2] {
+		label="encoderTableFly"
+		name="encoderTableFly.adl"
+		args="P=yyy:,Q=tFly:,FLY=xxx:eFly:"
+	}
+	clr=0
+	bclr=17
+	label="-encoderFly"
+}
+"related display" {
+	object {
+		x=210
+		y=160
+		width=70
+		height=20
+	}
+	display[0] {
+		label="dlmPlots.adl"
+		name="dlmPlots.adl"
+		args="P=xxx:,Q=dlm:"
+	}
+	clr=0
+	bclr=17
+	label="-DLM4000"
+}
+"related display" {
+	object {
+		x=70
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="TDS3000 scope"
+		name="tds3000_c.adl"
+		args="scope=xxx:tds:"
+	}
+	display[1] {
+		label="asyn record"
+		name="asynRecord.adl"
+		args="P=xxx:,R=tds:"
+	}
 	display[14] {
-		label="busyRecord2"
-		name="xxBusyRecord.adl"
-		args="P=xxx:,R=mybusy2"
+		label=" "
 	}
 	display[15] {
-		label="editSseq"
-		name="editSseq.adl"
-		args="P=xxx:,Q=ES:"
+		label=" "
 	}
 	clr=0
 	bclr=17
-	label="-userCalc"
+	label="-tds3000"
+}
+"related display" {
+	object {
+		x=140
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="grating"
+		name="grating.adl"
+		args="P=xxx:,Q=gr:"
+	}
+	clr=0
+	bclr=17
+	label="-grating"
+}
+"related display" {
+	object {
+		x=210
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="encoderFly"
+		name="encoderFly.adl"
+		args="P=xxx:,Q=eFly:"
+	}
+	display[1] {
+		label="encoderInterlaceFly"
+		name="encoderInterlaceFly.adl"
+		args="P=xxx:,Q=iFly:,FLY=xxx:eFly:"
+	}
+	display[2] {
+		label="encoderTableFly"
+		name="encoderTableFly.adl"
+		args="P=yyy:,Q=tFly:"
+	}
+	display[3] {
+		label="interlaceParms"
+		name="interlaceParms.adl"
+		args="P=xxx:,Q=iParms1:"
+	}
+	display[4] {
+		label="EnsemblePSOFly"
+		name="EnsemblePSOFly.adl"
+		args="P=xxx:,Q=PSOFly:"
+	}
+	display[5] {
+		label="interlaceFly"
+		name="interlaceFly.adl"
+		args="P=xxx:,Q=iFly:"
+	}
+	display[7] {
+		label="tablePSOFly"
+		name="tablePSOFly.adl"
+		args="P=yyy:,Q=tFly:"
+	}
+	display[8] {
+		label="interlaceParms"
+		name="interlaceParms.adl"
+		args="P=xxx:,Q=iParms2:"
+	}
+	clr=0
+	bclr=17
+	label="-Fly"
+}
+"related display" {
+	object {
+		x=280
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="DG645"
+		name="srsDG645.adl"
+		args="P=xxx:,R=DG0:"
+	}
+	display[1] {
+		label="DG535"
+		name="devDG535.adl"
+		args="P=xxx:,R=DG0:"
+	}
+	display[2] {
+		label="delaygen.adl"
+		name="delaygen.adl"
+		args="P=xxx:"
+	}
+	clr=0
+	bclr=17
+	label="-delayGen"
+}
+"related display" {
+	object {
+		x=350
+		y=180
+		width=70
+		height=20
+	}
+	display[0] {
+		label="calcEnergy"
+		name="calcEnergy.adl"
+		args="P=xxx:,P_ID=xxx:,P_MONO=xxx:,P_SLIT=xxx:"
+	}
+	clr=0
+	bclr=17
+	label="-calcEnergy"
 }
diff --git a/xxxApp/op/opi/xxx.opi b/xxxApp/op/opi/xxx.opi
index a2c4b6e932626a92427a06da7403832aeeaef59c..04ea8516833cba95bef0145ac456448a861a9aa5 100644
--- a/xxxApp/op/opi/xxx.opi
+++ b/xxxApp/op/opi/xxx.opi
@@ -4421,6 +4421,14 @@ $(pv_value)</tooltip>
         <replace>0</replace>
         <description>Simulator #2 Specific</description>
       </action>
+      <action type="OPEN_DISPLAY">
+        <path>ADTop.opi</path>
+        <macros>
+          <include_parent_macros>true</include_parent_macros>
+        </macros>
+        <replace>0</replace>
+        <description>AD Top (prebuilts)</description>
+      </action>
     </actions>
     <tooltip>$(pv_name)
 $(pv_value)</tooltip>
@@ -5191,4 +5199,4 @@ $(pv_value)</tooltip>
 $(pv_value)</tooltip>
     <x>140</x>
   </widget>
-</display>
\ No newline at end of file
+</display>
diff --git a/xxxApp/op/ui/.gitignore b/xxxApp/op/ui/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/xxxApp/op/ui/autoconvert/.gitignore b/xxxApp/op/ui/autoconvert/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/xxxApp/op/ui/Security_Control.ui b/xxxApp/op/ui/autoconvert/Security_Control.ui
similarity index 100%
rename from xxxApp/op/ui/Security_Control.ui
rename to xxxApp/op/ui/autoconvert/Security_Control.ui
diff --git a/xxxApp/op/ui/xxx.ui b/xxxApp/op/ui/autoconvert/xxx.ui
similarity index 99%
rename from xxxApp/op/ui/xxx.ui
rename to xxxApp/op/ui/autoconvert/xxx.ui
index b4dd3c9686235631723fc4dc8c8076cf76c8a5ed..e11b099f201e58a5c317c72fd6d38cd07011db95 100644
--- a/xxxApp/op/ui/xxx.ui
+++ b/xxxApp/op/ui/autoconvert/xxx.ui
@@ -2030,13 +2030,13 @@ QPushButton::menu-indicator {image: url(none.png); width: 0}
                 <enum>Menu</enum>
             </property>
             <property name="labels">
-                <string>Simulator #1 General;Simulator #1 Specific;Simulator #2 General;Simulator #2 Specific</string>
+                <string>Simulator #1 General;Simulator #1 Specific;Simulator #2 General;Simulator #2 Specific; AD Top (prebuilts)</string>
             </property>
             <property name="files">
-                <string>ADBase.adl;simDetector.adl;ADBase.adl;simDetector.adl</string>
+                <string>ADBase.adl;simDetector.adl;ADBase.adl;simDetector.adl;ADTop</string>
             </property>
             <property name="args">
-                <string>P=xxx:, R=SIM1:cam1:;P=xxx:, R=SIM1:cam1:;P=xxx:, R=SIM1:cam2:;P=xxx:, R=SIM1:cam2:</string>
+                <string>P=xxx:, R=SIM1:cam1:;P=xxx:, R=SIM1:cam1:;P=xxx:, R=SIM1:cam2:;P=xxx:, R=SIM1:cam2:;</string>
             </property>
             <property name="removeParent">
                 <string>false;false;false;false</string>
diff --git a/xxxApp/src/Makefile b/xxxApp/src/Makefile
index 63ddcfa8ac3a46fe6facc6e9a0262263f5623822..b3ce42864644e1fb231c1258d0eff39283625eda 100644
--- a/xxxApp/src/Makefile
+++ b/xxxApp/src/Makefile
@@ -325,6 +325,8 @@ ifeq (vxWorks,$(findstring vxWorks, $(T_A)))
 		iocxxxVX_DBD += tyGSOctal.dbd
 		iocxxxVX_DBD += drvIpac.dbd
 		xxx_LIBS_vxWorks += TyGSOctal Ipac
+		iocxxxVX_DBD += IP520.dbd
+		xxx_LIBS_vxWorks += IP520
 	endif
 
 	ifdef ASYN