diff --git a/common/create_gds_library.py b/common/create_gds_library.py
index 23b7553..85380fe 100755
--- a/common/create_gds_library.py
+++ b/common/create_gds_library.py
@@ -36,7 +36,7 @@
 
 #----------------------------------------------------------------------------
 
-def create_gds_library(destlibdir, destlib, startup_script, do_compile_only, excludelist, keep):
+def create_gds_library(destlibdir, destlib, startup_script, do_compile_only=False, excludelist=[], keep=False):
 
     alllibname = destlibdir + '/' + destlib + '.gds'
     if os.path.isfile(alllibname):
@@ -130,9 +130,6 @@
             for gfile in glist:
                 if os.path.isfile(gfile):
                     os.remove(gfile)
-            if newname:
-                if os.path.isfile(newname):
-                    os.remove(newname)
         if not keep:
             os.remove(destlibdir + '/generate_magic.tcl')
     else:
@@ -163,7 +160,7 @@
             keyval = option[1:].split('=')
             if keyval[0] == 'compile-only':
                 if len(keyval) > 0:
-                    if keyval[1].tolower() == 'true' or keyval[1] == 'yes' or keyval[1] == '1':
+                    if keyval[1].tolower() == 'true' or keyval[1].tolower() == 'yes' or keyval[1] == '1':
                         do_compile_only = True
                 else:
                     do_compile_only = True
diff --git a/common/create_lef_library.py b/common/create_lef_library.py
index 2b76f9a..2d56b41 100755
--- a/common/create_lef_library.py
+++ b/common/create_lef_library.py
@@ -14,6 +14,8 @@
 import glob
 import fnmatch
 
+#----------------------------------------------------------------------------
+
 def usage():
     print('')
     print('Usage:')
@@ -29,7 +31,9 @@
     print('    -excludelist=     is a comma-separated list of files to ignore')
     print('')
 
-def create_lef_library(destlibdir, destlib, do_compile_only, excludelist):
+#----------------------------------------------------------------------------
+
+def create_lef_library(destlibdir, destlib, do_compile_only=False, excludelist=[]):
 
     alllibname = destlibdir + '/' + destlib + '.lef'
     if os.path.isfile(alllibname):
@@ -84,9 +88,6 @@
             for lfile in llist:
                 if os.path.isfile(lfile):
                     os.remove(lfile)
-            if newname:
-                if os.path.isfile(newname):
-                    os.remove(newname)
     else:
         print('Only one file (' + str(llist) + ');  ignoring "compile" option.')
 
@@ -114,7 +115,7 @@
             keyval = option[1:].split('=')
             if keyval[0] == 'compile-only':
                 if len(keyval) > 0:
-                    if keyval[1].tolower() == 'true' or keyval[1] == 'yes' or keyval[1] == '1':
+                    if keyval[1].tolower() == 'true' or keyval[1].tolower() == 'yes' or keyval[1] == '1':
                         do_compile_only = True
                 else:
                     do_compile_only = True
diff --git a/common/create_lib_library.py b/common/create_lib_library.py
index 8f9a39f..7ee350c 100755
--- a/common/create_lib_library.py
+++ b/common/create_lib_library.py
@@ -14,6 +14,8 @@
 import glob
 import fnmatch
 
+#----------------------------------------------------------------------------
+
 def usage():
     print('')
     print('Usage:')
@@ -29,14 +31,16 @@
     print('    -excludelist=     is a comma-separated list of files to ignore')
     print('')
 
+#----------------------------------------------------------------------------
 # Warning:  This script is unfinished.  Needs to parse the library header
 # in each cell and generate a new library header combining the contents of
 # all cell headers.  Also:  The library name in the header needs to be
 # changed to the full library name.  Also:  There is no mechanism for
 # collecting all files belonging to a single process corner/temperature/
 # voltage.
+#----------------------------------------------------------------------------
 
-def create_lib_library(destlibdir, destlib, do_compile_only, excludelist):
+def create_lib_library(destlibdir, destlib, do_compile_only=False, excludelist=[]):
 
     alllibname = destlibdir + '/' + destlib + '.lib'
     if os.path.isfile(alllibname):
@@ -83,9 +87,6 @@
             for lfile in llist:
                 if os.path.isfile(lfile):
                     os.remove(lfile)
-            if newname:
-                if os.path.isfile(newname):
-                    os.remove(newname)
     else:
         print('Only one file (' + str(llist) + ');  ignoring "compile" option.')
 
@@ -113,7 +114,7 @@
             keyval = option[1:].split('=')
             if keyval[0] == 'compile-only':
                 if len(keyval) > 0:
-                    if keyval[1].tolower() == 'true' or keyval[1] == 'yes' or keyval[1] == '1':
+                    if keyval[1].tolower() == 'true' or keyval[1].tolower() == 'yes' or keyval[1] == '1':
                         do_compile_only = True
                 else:
                     do_compile_only = True
diff --git a/common/create_spice_library.py b/common/create_spice_library.py
index 6b8aa83..a25ac34 100755
--- a/common/create_spice_library.py
+++ b/common/create_spice_library.py
@@ -36,7 +36,7 @@
 
 #----------------------------------------------------------------------------
 
-def create_spice_library(destlibdir, destlib, spiext, do_compile_only, do_stub, excludelist):
+def create_spice_library(destlibdir, destlib, spiext, do_compile_only=False, do_stub=False, excludelist=[]):
 
     fformat = 'CDL' if spiext == '.cdl' else 'SPICE'
 
diff --git a/common/create_verilog_library.py b/common/create_verilog_library.py
index d8565f4..fb530ab 100755
--- a/common/create_verilog_library.py
+++ b/common/create_verilog_library.py
@@ -35,7 +35,7 @@
 
 #----------------------------------------------------------------------------
 
-def create_verilog_library(destlibdir, destlib, do_compile_only, do_stub, excludelist):
+def create_verilog_library(destlibdir, destlib, do_compile_only=False, do_stub=False, excludelist=[]):
 
     alllibname = destlibdir + '/' + destlib + '.v'
     if os.path.isfile(alllibname):
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 267342b..6e337f5 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -872,6 +872,11 @@
 
                     create_verilog_library(destlibdir, compname, do_compile_only, do_stub, excludelist)
 
+                    if do_compile_only == True:
+                        if newname:
+                            if os.path.isfile(newname):
+                                os.remove(newname)
+
                 elif option[0] == 'gds' and have_mag_8_2:
                     # If there is not a single file with all GDS cells in it,
                     # then compile one.
@@ -882,6 +887,11 @@
                         startup_script = targetdir + mag_current + pdkname + '.magicrc'
                     create_gds_library(destlibdir, compname, startup_script, do_compile_only, excludelist)
 
+                    if do_compile_only == True:
+                        if newname:
+                            if os.path.isfile(newname):
+                                os.remove(newname)
+
                 elif option[0] == 'liberty' or option[0] == 'lib':
                     # If there is not a single file with all liberty cells in it,
                     # then compile one, because one does not want to have to have
@@ -889,6 +899,11 @@
 
                     create_lib_library(destlibdir, compname, do_compile_only, excludelist)
 
+                    if do_compile_only == True:
+                        if newname:
+                            if os.path.isfile(newname):
+                                os.remove(newname)
+
                 elif option[0] == 'spice' or option[0] == 'spi':
                     # If there is not a single file with all SPICE subcircuits in it,
                     # then compile one, because one does not want to have to have
@@ -919,6 +934,11 @@
 
                     create_lef_library(destlibdir, compname, do_compile_only, excludelist)
 
+                    if do_compile_only == True:
+                        if newname:
+                            if os.path.isfile(newname):
+                                os.remove(newname)
+
         # Find any libraries/options marked as "privileged" (or "private") and
         # move the files from libs.tech or libs.ref to libs.priv, leaving a
         # symbolic link in the original location.  Do this during the initial
