diff --git a/internal/MEDLEY-UTILS b/internal/MEDLEY-UTILS
index abf4d00e..c4c6c9ca 100644
--- a/internal/MEDLEY-UTILS
+++ b/internal/MEDLEY-UTILS
@@ -1,12 +1,11 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
 
-(FILECREATED "23-May-2023 07:10:58" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;12| 10354  
+(FILECREATED "31-Jul-2023 18:34:20" |{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;3| 10550  
 
-      :EDIT-BY "lmm"
+      :CHANGES-TO (FNS MAKE-WHEREIS-HASH)
 
-      :CHANGES-TO (FNS GATHER-INFO)
-
-      :PREVIOUS-DATE "22-May-2023 22:57:21" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;11|)
+      :PREVIOUS-DATE "31-Jul-2023 18:07:23" 
+|{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;2|)
 
 
 (PRETTYCOMPRINT MEDLEY-UTILSCOMS)
@@ -156,24 +155,27 @@
                                                              "Edited September 29, 1986 by van Melle")
     (CNDIR (MEDLEYDIR "sources"))
     (LOAD 'FILESETS)
-    (GATHEREXPORTS EXPORTFILES (MEDLEYDIR "tmp" "exports.all" T))))
+    (GATHEREXPORTS EXPORTFILES (CONCAT '{DSK} (UNIX-GETENV "LOADUP_WORKDIR")
+                                      "/" "exports.all"))))
 
 (MAKE-WHEREIS-HASH
-  (LAMBDA NIL                                               (* \; "Edited 12-Mar-2022 12:46 by rmk")
+  (LAMBDA (DRIBBLEFILE)                                     (* \; "Edited 12-Mar-2022 12:46 by rmk")
                                                           (* \; "Edited 24-Mar-2021 13:26 by larry")
     (LET ((FILING.ENUMERATION.DEPTH 2)
           HASHFILE)
-         (DRIBBLE (MEDLEYDIR "tmp" "whereis.dribble" T))
-         (SETQ HASHFILE (XCL::WHERE-IS-NOTICE (MEDLEYDIR "tmp" "whereis.hash-tmp" T)
+         (DRIBBLE DRIBBLEFILE)
+         (SETQ HASHFILE (XCL::WHERE-IS-NOTICE (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_WORKDIR")
+                                                     "/" "whereis.hash-tmp")
                                :FILES
                                (|for| X |in| MEDLEY-FIX-DIRS |collect| (CONCAT (MEDLEYDIR X)
                                                                               "*.;"))
                                :HASH-FILE-SIZE 60000 :NEW T))
-         (RENAMEFILE HASHFILE (MEDLEYDIR "tmp" "whereis.hash" T))
+         (RENAMEFILE HASHFILE (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_WORKDIR")
+                                     "/" "whereis.hash"))
          (DRIBBLE))))
 )
 (DECLARE\: DONTCOPY
-  (FILEMAP (NIL (624 7499 (GATHER-INFO 634 . 6162) (MAKE-FULLER-DB 6164 . 6854) (MEDLEY-FIX-LINKS 6856
- . 7253) (MEDLEY-FIX-DATES 7255 . 7497)) (8538 10331 (MAKE-EXPORTS-ALL 8548 . 9507) (MAKE-WHEREIS-HASH
- 9509 . 10329)))))
+  (FILEMAP (NIL (623 7498 (GATHER-INFO 633 . 6161) (MAKE-FULLER-DB 6163 . 6853) (MEDLEY-FIX-LINKS 6855
+ . 7252) (MEDLEY-FIX-DATES 7254 . 7496)) (8537 10527 (MAKE-EXPORTS-ALL 8547 . 9575) (MAKE-WHEREIS-HASH
+ 9577 . 10525)))))
 STOP
diff --git a/internal/MEDLEY-UTILS.LCOM b/internal/MEDLEY-UTILS.LCOM
index f4ccfed1..acc62cc9 100644
Binary files a/internal/MEDLEY-UTILS.LCOM and b/internal/MEDLEY-UTILS.LCOM differ
diff --git a/scripts/cpv b/scripts/cpv
index 29fc5604..7f0e7ece 100755
--- a/scripts/cpv
+++ b/scripts/cpv
@@ -4,6 +4,13 @@
 # could extend with -r or copying multiple files
 # could change from cp to ln
 
+ln_or_cp () {
+    f=$(df $(dirname $1) | tail -1 | awk '{ print $1 }')
+    d=$(df $(dirname $2) | tail -1 | awk '{ print $1 }')
+    if [ "$f" != "$d" ]; then cmd="cp -p"; else cmd="ln"; fi
+    echo $cmd
+}
+
 file="$1"
 dest="$2"
 
@@ -18,9 +25,15 @@ if [ -d "$dest" ]; then
     dest=$dest/`basename $file`
 fi
 
+# if (the new) $dest is a directory, then just bail
+if [ -d "$dest" ]; then
+    echo "Error: destination file ($dest) is a directory. Exiting."
+    exit 1
+fi
+
 # if no such file $dest then just copy
 if [ ! -f "$dest" ]; then
-    ln $file $dest		#WAS cp -p $file $dest 
+    $(ln_or_cp $file $dest) $file $dest
     exit 0
 fi
 
@@ -41,7 +54,7 @@ if [ $max -eq 0 ]; then		# no current versions
     new=2
 else
     if cmp -q $dest $dest.~$max~ >/dev/null 2>&1
-    then			# they're different 
+    then			# they're different
 	max=`expr $max + 1`	# make newer version
 	mv $dest $dest.~$max~
 	new=`expr $max + 1`
@@ -51,11 +64,8 @@ else
     fi
 fi
 
-# make new version
+# make new version and link it
 
-ln $file $dest.~$new~		# cp -p $file $dest.~$new~
-ln $dest.~$new~ $dest		# and link it
-
-
-
-	
+$(ln_or_cp $file $dest.~new~) $file $dest.~$new~
+rm -f $dest
+ln $dest.~$new~ $dest
diff --git a/scripts/loadup-apps-from-full.sh b/scripts/loadup-apps-from-full.sh
index a00d54f0..d7b6cb7d 100755
--- a/scripts/loadup-apps-from-full.sh
+++ b/scripts/loadup-apps-from-full.sh
@@ -7,6 +7,8 @@ fi
 
 . scripts/loadup-setup.sh
 
+loadup_start "loadup-apps-from-full"
+
 export ROOMSDIR=${MEDLEYDIR}/rooms
 export CLOSDIR=${MEDLEYDIR}/clos
 
@@ -21,7 +23,7 @@ if [ ! -e ${NOTECARDSDIR} ]; then
     fi
 fi
 
-./run-medley $scr -loadup "${MEDLEYDIR}/sources/LOADUP-APPS.CM" "${LOADUP_TMP}/full.sysout"
+./run-medley $scr -loadup "${MEDLEYDIR}/sources/LOADUP-APPS.CM" "${LOADUP_WORKDIR}/full.sysout"
 
 loadup_finish "loadup-apps-from-full" "apps.sysout" "apps.*"
 
diff --git a/scripts/loadup-aux.sh b/scripts/loadup-aux.sh
index 5dffc2e1..f0abfb47 100755
--- a/scripts/loadup-aux.sh
+++ b/scripts/loadup-aux.sh
@@ -7,8 +7,18 @@ fi
 
 . scripts/loadup-setup.sh
 
-echo '" (IL:MEDLEY-INIT-VARS)(IL:LOAD(QUOTE MEDLEY-UTILS))(IL:MAKE-EXPORTS-ALL)(IL:MAKE-WHEREIS-HASH)(IL:LOGOUT T)"' > ${LOADUP_WORKDIR}/loadup-aux.cm
+loadup_start "loadup-aux"
 
-./run-medley $scr -loadup "${LOADUP_WORKDIR}/loadup-aux.cm ${LOADUP_WORKDIR}/full.sysout
+cat >"${LOADUP_WORKDIR}"/loadup-aux.cm <<"EOF"
+"
+  (IL:MEDLEY-INIT-VARS)
+  (IL:LOAD(QUOTE MEDLEY-UTILS))
+  (IL:MAKE-EXPORTS-ALL)
+  (IL:MAKE-WHEREIS-HASH (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /whereis.dribble))))
+  (IL:LOGOUT T)
+"
+EOF
+
+./run-medley $scr -loadup "${LOADUP_WORKDIR}"/loadup-aux.cm "${LOADUP_WORKDIR}"/full.sysout
 
 loadup_finish "loadup-aux" "whereis.hash" "whereis.hash" "exports.all"
diff --git a/scripts/loadup-full-from-lisp.sh b/scripts/loadup-full-from-lisp.sh
index 509d5111..351ab260 100755
--- a/scripts/loadup-full-from-lisp.sh
+++ b/scripts/loadup-full-from-lisp.sh
@@ -7,6 +7,8 @@ fi
 
 . scripts/loadup-setup.sh
 
+loadup_start "loadup-full-from-lisp"
+
 ./run-medley $scr -loadup "$MEDLEYDIR/sources/LOADUP-FULL.CM" "${LOADUP_WORKDIR}/lisp.sysout"
 
 loadup_finish "loadup-full-from-lisp" "full.sysout" "full.*"
diff --git a/scripts/loadup-init.sh b/scripts/loadup-init.sh
index 947f42af..4c7be321 100755
--- a/scripts/loadup-init.sh
+++ b/scripts/loadup-init.sh
@@ -7,6 +7,8 @@ fi
 
 . scripts/loadup-setup.sh
 
+loadup_start "loadup-init"
+
 ./run-medley $scr -loadup "${MEDLEYDIR}"/sources/LOADUP-INIT.LISP loadups/starter.sysout
 
 loadup_finish "loadup-init" "init.dlinit" "init.*" "RDSYS*" "I-NEW*"
diff --git a/scripts/loadup-lisp-from-mid.sh b/scripts/loadup-lisp-from-mid.sh
index 222466f8..283b8ba6 100755
--- a/scripts/loadup-lisp-from-mid.sh
+++ b/scripts/loadup-lisp-from-mid.sh
@@ -7,6 +7,8 @@ fi
 
 . scripts/loadup-setup.sh
 
+loadup_start "loadup-lisp-from-mid"
+
 ./run-medley $scr -loadup "$MEDLEYDIR/sources/LOADUP-LISP.CM" ${LOADUP_WORKDIR}/init-mid.sysout
 
 loadup_finish "loadup-lisp-from-mid" "lisp.sysout" "lisp.*"
diff --git a/scripts/loadup-mid-from-init.sh b/scripts/loadup-mid-from-init.sh
index afb12fa3..d5f4ff26 100755
--- a/scripts/loadup-mid-from-init.sh
+++ b/scripts/loadup-mid-from-init.sh
@@ -7,6 +7,8 @@ fi
 
 . scripts/loadup-setup.sh
 
-./run-medley -prog "ldeinit" -NF -loadup $MEDLEYDIR/sources/XREM.CM $scr -vmem tmp/init-mid.sysout ${LOADUP_WORKDIR}/init.dlinit
+loadup_start "loadup-mid-from-init"
+
+./run-medley -prog "ldeinit" -NF -loadup $MEDLEYDIR/sources/XREM.CM $scr -vmem ${LOADUP_WORKDIR}/init-mid.sysout ${LOADUP_WORKDIR}/init.dlinit
 
 loadup_finish "loadup-mid-from-init" "init-mid.sysout" "init-mid.sysout"
diff --git a/scripts/loadup-setup.sh b/scripts/loadup-setup.sh
index 194bde91..2fca51be 100644
--- a/scripts/loadup-setup.sh
+++ b/scripts/loadup-setup.sh
@@ -1,8 +1,6 @@
 
 export MEDLEYDIR=`pwd`
 
-# echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%${LOADUP_WORKDIR}============="
-
 if [ -z "${LOADUP_WORKDIR}" ];
 then
   export LOADUP_WORKDIR=/tmp/loadups-$$
@@ -14,8 +12,13 @@ scr="-sc 1024x768 -g 1042x790"
 
 touch "${LOADUP_WORKDIR}"/loadup.timestamp
 
+
+loadup_start () {
+  echo ">>>>> START ${1}"
+}
+
 loadup_finish () {
-  echo "===== ${1}"
+  local script_name=${1}
   if [ "${LOADUP_WORKDIR}/${2}" -nt "${LOADUP_WORKDIR}"/loadup.timestamp ];
   then
     echo "+++++ SUCCESS +++++"
@@ -24,13 +27,14 @@ loadup_finish () {
     echo "----- FAILURE -----"
     exit_code=1
   fi
-  echo "===== files created ======"
+  echo "..... files created ....."
     shift; shift
     for f in ${*};
     do
       ls -l "${LOADUP_WORKDIR}"/$f 2>/dev/null
     done
-  echo "======================================="
+  echo "<<<<< END ${script_name}"
+  echo ""
   exit ${exit_code}
 }
 
diff --git a/sources/LOADUP-FULL b/sources/LOADUP-FULL
index 104dbbee..55171e07 100644
--- a/sources/LOADUP-FULL
+++ b/sources/LOADUP-FULL
@@ -1,10 +1,10 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "18-Jan-2023 16:23:36" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;2 4636   
+(FILECREATED "31-Jul-2023 18:28:53" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;4 4521   
 
       :CHANGES-TO (FNS LOADUP-FULL)
 
-      :PREVIOUS-DATE "12-Aug-2022 12:30:09" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;1
+      :PREVIOUS-DATE "18-Jan-2023 16:23:36" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;3
 )
 
 
@@ -39,7 +39,7 @@
                (PRINTOUT T "FULL fonts loaded" T])
 
 (LOADUP-FULL
-  [LAMBDA NIL                                                (* ; "Edited 18-Jan-2023 16:22 by FGH")
+  [LAMBDA (DRIBBLEFILE)                                      (* ; "Edited 18-Jan-2023 16:22 by FGH")
                                                              (* ; "Edited 12-Aug-2022 11:17 by lmm")
                                                              (* ; "Edited 14-Jul-2022 12:32 by rmk")
                                                              (* ; "Edited 12-Jul-2022 21:57 by rmk")
@@ -55,9 +55,7 @@
     (PROGN (SETQ MEDLEYDIR)
            (CNDIR (MEDLEYDIR)))
     (MEDLEY-INIT-VARS)
-    (SETQ MAKESYSFILENAME (MEDLEYDIR "tmp" "full.sysout" T))
-    (SETQ MAKESYSNAME :MEDLEY)
-    (DRIBBLE (MEDLEYDIR "tmp" "full.dribble" T))
+    (DRIBBLE DRIBBLEFILE)
 
     (* ;; "BKSYSBUF stops page holding ")
 
@@ -88,5 +86,5 @@
 
 (FIXMETA)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (467 4598 (LOADFULLFONTS 477 . 1918) (LOADUP-FULL 1920 . 4348) (FIXMETA 4350 . 4596)))))
+  (FILEMAP (NIL (467 4483 (LOADFULLFONTS 477 . 1918) (LOADUP-FULL 1920 . 4233) (FIXMETA 4235 . 4481)))))
 STOP
diff --git a/sources/LOADUP-FULL.CM b/sources/LOADUP-FULL.CM
index 3ba363d4..8ebb9a67 100644
--- a/sources/LOADUP-FULL.CM
+++ b/sources/LOADUP-FULL.CM
@@ -1 +1 @@
-"

(PROGN(IL:LOAD(IL:CONCAT(QUOTE {DSK})(IL:UNIX-GETENV(QUOTE MEDLEYDIR))(QUOTE /sources/LOADUP-FULL.LCOM)))(IL:LOADUP-FULL)(IL:HARDRESET))
SHH(PROGN(IL:ENDLOADUP)(IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.sysout))) :FULL))
(IL:LOGOUT T)

"
\ No newline at end of file
+"

(PROGN
  (IL:LOAD(IL:CONCAT(QUOTE {DSK})(IL:UNIX-GETENV(QUOTE MEDLEYDIR))(QUOTE /sources/LOADUP-FULL.LCOM)))
  (IL:LOADUP-FULL (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.dribble))))
  (IL:HARDRESET)
)
SHH
(PROGN
  (IL:ENDLOADUP)
  (IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.sysout))) :FULL))
  (IL:LOGOUT T)
)

"
\ No newline at end of file
diff --git a/sources/LOADUP-FULL.LCOM b/sources/LOADUP-FULL.LCOM
index 2db7026c..51898200 100644
Binary files a/sources/LOADUP-FULL.LCOM and b/sources/LOADUP-FULL.LCOM differ
diff --git a/sources/LOADUP-LISP b/sources/LOADUP-LISP
index a2f54a70..140f17a9 100644
--- a/sources/LOADUP-LISP
+++ b/sources/LOADUP-LISP
@@ -1,12 +1,11 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
 
-(FILECREATED "27-Feb-2023 17:15:53" |{DSK}<home>larry>il>medley>sources>LOADUP-LISP.;2| 5263   
-
-      :EDIT-BY "lmm"
+(FILECREATED "31-Jul-2023 18:22:53" |{DSK}<home>frank>il>medley>gmedley>sources>LOADUP-LISP.;2| 5235   
 
       :CHANGES-TO (FNS LOADUP-LISP)
 
-      :PREVIOUS-DATE "12-Aug-2022 12:29:57" |{DSK}<home>larry>il>medley>sources>LOADUP-LISP.;1|)
+      :PREVIOUS-DATE "27-Feb-2023 17:15:53" 
+|{DSK}<home>frank>il>medley>gmedley>sources>LOADUP-LISP.;1|)
 
 
 (PRETTYCOMPRINT LOADUP-LISPCOMS)
@@ -19,13 +18,13 @@
 (DEFINEQ
 
 (LOADUP-LISP
-  (LAMBDA NIL                                               (* \; "Edited 26-Feb-2023 12:17 by lmm")
+  (LAMBDA (DRIBBLEFILE)                                     (* \; "Edited 26-Feb-2023 12:17 by lmm")
                                                             (* \; "Edited 13-Jul-2022 14:09 by rmk")
                                                           (* \; "Edited  4-Mar-2022 19:13 by larry")
                                                            (* \; "Edited 29-Apr-2021 22:30 by rmk:")
     (SETQQ COMPILE.EXT LCOM)
     (MEDLEY-INIT-VARS)                                       (* \; "should be set earlier")
-    (DRIBBLE (MEDLEYDIR "tmp" "lisp.dribble" T))
+    (DRIBBLE DRIBBLEFILE)
     (FOR X IN BOOTLOADEDFILES DO (CL:UNLESS (MEMB X SYSFILES)
                                      (PRINTOUT T X " bootloaded" T)
                                      (SETQ SYSFILES (CONS X SYSFILES))))
@@ -124,5 +123,5 @@
 (GLOBALVARS MAKESYSFILENAME MEDLEY-INIT-VARS MEDLEYDIR SYSTEMINITVARS USERRECLST)
 )
 (DECLARE\: DONTCOPY
-  (FILEMAP (NIL (654 5057 (LOADUP-LISP 664 . 5055)))))
+  (FILEMAP (NIL (649 5029 (LOADUP-LISP 659 . 5027)))))
 STOP
diff --git a/sources/LOADUP-LISP.CM b/sources/LOADUP-LISP.CM
index 150fb0ee..d08bdff7 100644
--- a/sources/LOADUP-LISP.CM
+++ b/sources/LOADUP-LISP.CM
@@ -1 +1 @@
-"

(PROGN(LOAD(CONCAT(QUOTE {DSK})(UNIX-GETENV(QUOTE MEDLEYDIR))(QUOTE /sources/LOADUP-LISP.LCOM)))(LOADUP-LISP)(HARDRESET))
SHH(PROGN(IL:ENDLOADUP)':MEDLEY)(IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /lisp.sysout)))))
(IL:LOGOUT T)

"
\ No newline at end of file
+"

(PROGN
  (LOAD(CONCAT(QUOTE {DSK})(UNIX-GETENV(QUOTE MEDLEYDIR))(QUOTE /sources/LOADUP-LISP.LCOM)))
  (LOADUP-LISP(CONCAT(QUOTE {DSK})(UNIX-GETENV(QUOTE LOADUP_WORKDIR))(QUOTE /lisp.dribble)))
  (HARDRESET)
)
SHH
(PROGN
  (IL:ENDLOADUP)':MEDLEY)
  (IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /lisp.sysout)))))
  (IL:LOGOUT T)
)

"
\ No newline at end of file
diff --git a/sources/LOADUP-LISP.LCOM b/sources/LOADUP-LISP.LCOM
index 8e01adf6..46a716e5 100644
Binary files a/sources/LOADUP-LISP.LCOM and b/sources/LOADUP-LISP.LCOM differ
