diff --git a/VERSION b/VERSION
index dfa6bf0..5414b84 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.430
+1.0.431
diff --git a/common/insert_layer.py b/common/insert_layer.py
index af4623e..a993882 100755
--- a/common/insert_layer.py
+++ b/common/insert_layer.py
@@ -6,6 +6,10 @@
 # The layer is added to the layout in both the mag/ (full) and maglef/
 # (abstract) directories.  Option "-maglef" or "-mag" will restrict the
 # use to only the view indicated by the option.
+#
+# Extended 7/30/2023 to allow multiple rectangles to be specified by
+# allowing any multiple of four coordinates.  So eight coordinates will
+# generate two "rect" lines, for example.
 # 
 # e.g.:
 #
@@ -23,6 +27,7 @@
     layerrex = re.compile('<< ' + layer + ' >>')
     sectionrex = re.compile('<< ')
     labelsrex = re.compile('<< labels >>')
+    propsrex = re.compile('<< properties >>')
     endrex = re.compile('<< end >>')
 
     in_layer = False
@@ -33,19 +38,22 @@
             if not done and not in_layer:
                 # Handle case in which layer did not already exist in file
                 lmatch = labelsrex.match(line)
+                pmatch = propsrex.match(line)
                 ematch = endrex.match(line)
-                if lmatch or ematch:
-                    print('<< ' + layer + '>>', file=ofile)
-                    print('rect ' + geometry, file=ofile)
+                if lmatch or pmatch or ematch:
+                    print('<< ' + layer + ' >>', file=ofile)
+                    for coords in zip(*[iter(geometry.split())]*4):
+                        print('rect ' + ' '.join(coords), file=ofile)
                     done = True
             
             lmatch = layerrex.match(line)
-            if lmatch:
+            if lmatch or pmatch:
                 in_layer = True
             elif in_layer:
                 smatch = sectionrex.match(line)
                 if smatch:
-                    print('rect ' + geometry, file=ofile)
+                    for coords in zip(*[iter(geometry.split())]*4):
+                        print('rect ' + ' '.join(coords), file=ofile)
                     in_layer = False
                     done = True
 
@@ -63,13 +71,13 @@
     options = []
     arguments = []
     for item in sys.argv[1:]:
-        if item.find('-', 0) == 0:
+        if item.find('-', 0) == 0 and len(item) > 1 and item[1].isalpha():
             options.append(item)
         else:
             arguments.append(item)
 
     if len(arguments) < 5:
-        print("Not enough options given to insert_layer.py.")
+        print("Not enough arguments given to insert_layer.py.")
         usage()
         sys.exit(0)
 
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in
index 87afbde..289e5b7 100644
--- a/gf180mcu/Makefile.in
+++ b/gf180mcu/Makefile.in
@@ -431,6 +431,7 @@
 # The script(s) below are used for custom changes to the vendor PDK files
 PORTORDER = ../common/port_order.py ${EF_FORMAT}
 ADDPROP = ../common/insert_property.py ${EF_FORMAT}
+ADDLAYER = ../common/insert_layer.py ${EF_FORMAT}
 REMOVELAB = ../common/remove_label.py ${EF_FORMAT}
 
 # List the EDA tools to install local setup files for
@@ -1177,6 +1178,10 @@
 			filter=custom/scripts/fix_io_lef.py \
 		-verilog cells/*/*.v compile-only \
 		-library general gf180mcu_fd_io 2>&1 | tee -a ${GF180MCU$*}_make.log
+	# Quick solution to extraction issue---add the isolated substrate layer
+	# in the corner clamp cell that contains the devices being isolated.
+	${ADDLAYER} ${STAGING_PATH}/${GF180MCU$*} gf180mcu_fd_io ESD_CLAMP_COR \
+		isosubstrate "-42 43458 56113 57130 40932 43016 57057 55812" -mag
 
 sram-%:
 	# Install SRAM macros from vendor files
