diff --git a/support/bin/rtcds.in b/support/bin/rtcds.in
index faea743fa09541b3f6b011700ef281994a86d2dd..dbe542e225712dfa3de79087801db0abb035577e 100755
--- a/support/bin/rtcds.in
+++ b/support/bin/rtcds.in
@@ -48,6 +48,16 @@ umask 0002
 
 ##################################################
 
+contains() {
+    local x=$1
+    shift
+    [[ $@ =~ (^|[[:space:]])$x($|[[:space:]]) ]] && return 0 || return 1
+}
+
+epics_only_model() {
+    contains $1 $EPICS_ONLY_MODELS && return 0 || return 1
+}
+
 check_env() {
     for var in ${USER_VARS[*]} ; do
 	if [ ! "${!var}" ] ; then
@@ -136,7 +146,12 @@ check_host_sys_enabled() {
 check_host_sys_active() {
     for sys ; do
         check_unit_available ${sys}
-	if ! systemctl is-active rts@${sys}.target > /dev/null ; then
+	if epics_only_model ${sys} ; then
+            local unit_name=rts-epics@${sys}
+        else
+            local unit_name=rts@${sys}.target
+        fi
+	if ! systemctl is-active $unit_name > /dev/null ; then
 	    log "System '${sys}' is not active on this system'."
 	    exit 4
 	fi
@@ -146,7 +161,12 @@ check_host_sys_active() {
 check_host_sys_inactive() {
     for sys ; do
         check_unit_available ${sys}
-	if systemctl is-active rts@${sys}.target > /dev/null ; then
+        if epics_only_model ${sys} ; then
+            local unit_name=rts-epics@${sys}
+        else
+            local unit_name=rts@${sys}.target
+        fi
+	if systemctl is-active $unit_name > /dev/null ; then
 	    log "System '$sys' is already active on this system'."
 	    exit 4
 	fi
@@ -186,7 +206,11 @@ install_world() {
 start_sys() {
     for sys ; do
 	log "### starting $sys..."
-	sudo systemctl start rts@${sys}.target
+    if epics_only_model $sys ; then
+        sudo systemctl start rts-epics@${sys}
+    else
+	    sudo systemctl start rts@${sys}.target
+    fi
 	# pause needed to avoid timing glitch when user model started immediately after IOP
 	log "... waiting for start of ${sys} to complete"
 	sleep 15
@@ -198,7 +222,11 @@ stop_sys() {
     for sys ; do
 	log "### stopping $sys..."
 	#${SCRIPTD}/kill${sys}
-	sudo systemctl stop rts@${sys}.target
+    if epics_only_model $sys ; then
+        sudo systemctl stop rts-epics@${sys}
+    else
+	    sudo systemctl stop rts@${sys}.target
+    fi
     done
 }
 
@@ -226,24 +254,28 @@ _lsmod() {
     
     local allloaded=
     for m in ${modules[*]}; do
-	md=$(lsmod | grep "^${m}") || true
-	if [ -z "$md" ] ; then
-	    printf "%-18s ***NOT LOADED***\n" "$m"
-	    allloaded=1
-	else
-	    echo "$md"
-	fi
+        md=$(lsmod | grep "^${m}") || true
+        if [ -z "$md" ] ; then
+            printf "%-18s ***NOT LOADED***\n" "$m"
+            allloaded=1
+        else
+            echo "$md"
+        fi
     done
     if [ "$systems" ] ; then
 	echo
 	for m in ${systems[*]}; do
-	    md=$(lsmod | grep "^${m}") || true
-	    if [ -z "$md" ] ; then
-		printf "%-18s ***NOT LOADED***\n" "$m"
-		allloaded=1
-	    else
-		echo "$md"
-	    fi
+	if epics_only_model $m ; then
+            test 0
+	else
+            md=$(lsmod | grep "^${m}") || true
+            if [ -z "$md" ] ; then
+            printf "%-18s ***NOT LOADED***\n" "$m"
+            allloaded=1
+            else
+            echo "$md"
+            fi
+	fi
 	done
     fi
     if [ "$allloaded" ] ; then
@@ -267,18 +299,22 @@ systems_status() {
   echo "------------------------------------------------------"
 
   for sys in ${systems[*]} ; do
-    printf '%-15s' $sys
+    printf '%-15s ' $sys
     for subsys in ${subsystems[*]} ; do
       local subsysstatus='OFF'
-      if systemctl is-failed "rts-${subsys}@${sys}" > /dev/null ; then
-        subsysstatus='FAILED'
-        systems_health=10
+      if ! epics_only_model $sys || [[ $subsys == 'epics' ]] ; then
+          if systemctl is-failed "rts-${subsys}@${sys}" > /dev/null ; then
+            subsysstatus='FAILED'
+            systems_health=10
+          else
+            if systemctl is-active "rts-${subsys}@${sys}" > /dev/null ; then
+              subsysstatus='ON'
+            else
+              systems_health=10
+            fi
+          fi
       else
-        if systemctl is-active "rts-${subsys}@${sys}" > /dev/null ; then
-          subsysstatus='ON'
-        else
-          systems_health=10
-        fi
+          subsysstatus='N/A'
       fi
       printf '%-15s' $subsysstatus
     done