diff --git a/Makefile.in b/Makefile.in
index 202fa8d..1a1c2c7 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -63,7 +63,7 @@
 
 install:	${TECHS}	
 	for tech in ${TECHS}; do \
-		${MAKE} install-$${tech}-local; done
+		${MAKE} install-$${tech}; done
 
 clean:		${TECHS}
 	for tech in ${TECHS}; do \
diff --git a/scripts/configure b/scripts/configure
index 62b4a34..56a95d4 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -620,6 +620,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -690,6 +691,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -942,6 +944,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1079,7 +1090,7 @@
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1232,6 +1243,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1878,7 +1890,7 @@
   $as_echo_n "(cached) " >&6
 else
 
-	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+	for am_cv_pathless_PYTHON in python python2 python3  python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3  python3.2 python3.1 python3.0  python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1  python2.0 none; do
 	  test "$am_cv_pathless_PYTHON" = none && break
 	  prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
@@ -2101,28 +2113,33 @@
 
     if test -z $PYTHON;
     then
-        PYTHON="python"
+        if test -z "";
+        then
+            PYTHON="python3"
+        else
+            PYTHON=""
+        fi
     fi
     PYTHON_NAME=`basename $PYTHON`
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking $PYTHON_NAME module: distutils" >&5
 $as_echo_n "checking $PYTHON_NAME module: distutils... " >&6; }
-	$PYTHON -c "import distutils" 2>/dev/null
-	if test $? -eq 0;
-	then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    $PYTHON -c "import distutils" 2>/dev/null
+    if test $? -eq 0;
+    then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-		eval HAVE_PYMOD_DISTUTILS=yes
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+        eval HAVE_PYMOD_DISTUTILS=yes
+    else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-		eval HAVE_PYMOD_DISTUTILS=no
-		#
-		if test -n ""
-		then
-			as_fn_error $? "failed to find required module distutils" "$LINENO" 5
-			exit 1
-		fi
-	fi
+        eval HAVE_PYMOD_DISTUTILS=no
+        #
+        if test -n ""
+        then
+            as_fn_error $? "failed to find required module distutils" "$LINENO" 5
+            exit 1
+        fi
+    fi
 
 
 # Extract the first word of "magic", so it can be a program name with args.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index cc337dd..9823ce4 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -351,45 +351,36 @@
 	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/no_synth.cells	
 
 vendor-a:
-	# Install base device models from vendor files
-	# (NOTE: .mod and .pm3 files should not be in /cells/?)
+	# Install device subcircuits from vendor files
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-ngspice sky130_fd_pr_base/v%v/models/* filter=custom/scripts/fixspice.py \
-		-ngspice sky130_fd_pr_base/v%v/cells/*.mod filter=custom/scripts/fixspice.py \
-		-ngspice sky130_fd_pr_base/v%v/cells/*.pm3 filter=custom/scripts/fixspice.py \
-		|& tee -a ${SKY130A}_install.log
-	# Install RF device models from vendor files
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-ngspice sky130_fd_pr_rf/v%v/models/* filter=custom/scripts/fixspice.py \
-		|& tee -a ${SKY130A}_install.log
-	# Install additional RF device models from vendor files
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-ngspice sky130_fd_pr_rf2/v%v/models/* filter=custom/scripts/fixspice.py \
+		-ngspice sky130_fd_pr/latest/models/*.spice \
+		-ngspice sky130_fd_pr/latest/models/*/*.spice up 1 \
+		-ngspice sky130_fd_pr/latest/models/*/*/*.spice up 2 \
+		-ngspice sky130_fd_pr/latest/models/*/*/*/*.spice up 3 \
 		|& tee -a ${SKY130A}_install.log
 	# Install base device library from vendor files
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-gds %l/v%v/cells/*/*.gds \
-		-spice %l/v%v/cells/*/*.spice ignore=topography \
-		-spice %l/v%v/cells/*/*.sp \
-		-library primitive sky130_fd_pr_base \
-		-library primitive sky130_fd_pr_rf \
-		-library primitive sky130_fd_pr_rf2 |& tee -a ${SKY130A}_install.log
+		-gds %l/latest/cells/*/*.gds compile-only \
+		-cdl %l/latest/cells/*/*.cdl compile-only \
+		-lef %l/latest/cells/*/*.magic.lef compile-only \
+		-spice %l/latest/cells/*/*.spice compile-only \
+		-library primitive sky130_fd_pr |& tee -a ${SKY130A}_install.log
 	# Install SkyWater I/O pad library
-	# Purposely ignoring "-lef sky130_fd_io/v%v/lef/*.lef" and making our own LEF views
+	# Purposely ignoring "-lef sky130_fd_io/latest/lef/*.lef" and making our own LEF views
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-gds %l/v%v/cells/*/*.gds \
-		-verilog %l/v%v/cells/*/*.v \
-		-lib %l/v%v/cells/*/*.lib \
-		-doc %l/v%v/cells/*/*.doc \
-		-cdl %l/v%v/cells/*/*.cdl ignore=topography \
-		-spice %l/v%v/cells/*/*.spice  \
+		-gds %l/latest/cells/*/*.gds \
+		-verilog %l/latest/cells/*/*.v \
+		-lib %l/latest/cells/*/*.lib \
+		-doc %l/latest/cells/*/*.doc \
+		-cdl %l/latest/cells/*/*.cdl ignore=topography \
+		-spice %l/latest/cells/*/*.spice  \
 		-library general sky130_fd_io |& tee -a ${SKY130A}_install.log
 	# Install all SkyWater digital standard cells.
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-techlef %l/latest/tech/*.tlef \
 		-spice %l/latest/cells/*/*.spice compile-only \
 		-cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
-		-lef %l/latest/cells/*/*.lef exclude=*.*.lef compile-only \
+		-lef %l/latest/cells/*/*.magic.lef compile-only \
 		-doc %l/latest/cells/*/*.pdf \
 		-lib %l/latest/timing/*.lib \
 		-gds %l/latest/cells/*/*.gds compile-only \
