diff --git a/gf180mcu/magic/gf180mcu.tcl b/gf180mcu/magic/gf180mcu.tcl
index 5c2e60f..4364361 100644
--- a/gf180mcu/magic/gf180mcu.tcl
+++ b/gf180mcu/magic/gf180mcu.tcl
@@ -186,7 +186,7 @@
    magic::add_toolkit_separator	$layoutframe pdk2
 
 #ifdef MIM
-   magic::add_toolkit_command $layoutframe "cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF - MiM cap " "magic::gencell gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF" pdk2
+   magic::add_toolkit_command $layoutframe "cap_mim_2p0fF - MiM cap " "magic::gencell gf180mcu::cap_mim_2p0fF" pdk2
 #endif (MIM)
    magic::add_toolkit_separator	$layoutframe pdk2
 
@@ -665,7 +665,7 @@
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 doverlap 0 full_metal 1 \
-	compatible {diode_nd2ps_03v3 diode_nd2ps_06v0diode_nd2ps_06v0diode_nd2ps_06v0np_6p0_nat}}
+	compatible {diode_nd2ps_03v3 diode_nd2ps_06v0 diode_nd2ps_06v0_nat}}
 }
 
 proc gf180mcu::diode_pd2nw_03v3_defaults {} {
@@ -1082,7 +1082,7 @@
 # MiM minimum size set to 2.165 to prevent isolated via
 
 #ifdef MIM
-proc gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF_defaults {} {
+proc gf180mcu::cap_mim_2p0fF_defaults {} {
     return {w 5.00 l 5.00 val 50.000 carea 25.00 cperi 20.00 \
 		nx 1 ny 1 dummy 0 square 0 lmin 5.00 wmin 5.00 \
 		lmax 100.0 wmax 100.0 dc 0 bconnect 1 tconnect 1}
@@ -1167,7 +1167,7 @@
 }
 
 #ifdef MIM
-proc gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF_convert {parameters} {
+proc gf180mcu::cap_mim_2p0fF_convert {parameters} {
     return [cap_convert $parameters]
 }
 #endif
@@ -1204,8 +1204,8 @@
 }
 
 #ifdef MIM
-proc gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF_dialog {parameters} {
-    gf180mcu::cap_dialog cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF $parameters
+proc gf180mcu::cap_mim_2p0fF_dialog {parameters} {
+    gf180mcu::cap_dialog cap_mim_2p0fF $parameters
 }
 #endif
 
@@ -1645,7 +1645,7 @@
 #----------------------------------------------------------------
 
 #ifdef MIM
-proc gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF_draw {parameters} {
+proc gf180mcu::cap_mim_2p0fF_draw {parameters} {
     set newdict [dict create \
 #ifdef METALS6
 	    top_type 		mtp \
@@ -1765,7 +1765,7 @@
 }
 
 #ifdef MIM
-proc gf180mcu::cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_cap_mim_2p0fF_check {parameters} {
+proc gf180mcu::cap_mim_2p0fF_check {parameters} {
     return [gf180mcu::cap_check $parameters]
 }
 #endif
@@ -3278,23 +3278,23 @@
 		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.22 \
 		full_metal 1 \
-		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nat}}
+		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nvt}}
 }
 
-proc gf180mcu::nfet_06v0_defaults {} {
+proc gf180mcu::nfet_06v0_nvtdefaults {} {
     return {w 0.3 l 0.6 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.6 wmin 0.3 \
 		full_metal 1 \
-		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nat}}
+		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nvt}}
 }
 
-proc gf180mcu::nfet_06v0_nat_defaults {} {
+proc gf180mcu::nfet_06v0_nvt_defaults {} {
     return {w 0.8 l 1.8 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 1.8 wmin 0.8 \
 		full_metal 1 \
-		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nat}}
+		compatible {nfet_03v3 nfet_06v0 nfet_06v0_nvt}}
 }
 
 #----------------------------------------------------------------
@@ -3353,11 +3353,11 @@
     return [gf180mcu::mos_convert $parameters]
 }
 
-proc gf180mcu::nfet_06v0_convert {parameters} {
+proc gf180mcu::nfet_06v0_nvtconvert {parameters} {
     return [gf180mcu::mos_convert $parameters]
 }
 
-proc gf180mcu::nfet_06v0_nat_convert {parameters} {
+proc gf180mcu::nfet_06v0_nvt_convert {parameters} {
     return [gf180mcu::mos_convert $parameters]
 }
 
@@ -3428,11 +3428,11 @@
     gf180mcu::mos_dialog nfet_03v3 $parameters
 }
 
-proc gf180mcu::nfet_06v0_dialog {parameters} {
+proc gf180mcu::nfet_06v0_nvtdialog {parameters} {
     gf180mcu::mos_dialog nfet_06v0 $parameters
 }
 
-proc gf180mcu::nfet_06v0_nat_dialog {parameters} {
+proc gf180mcu::nfet_06v0_nvt_dialog {parameters} {
     gf180mcu::mos_dialog nfet_06v0_nat $parameters
 }
 
@@ -4313,7 +4313,7 @@
    return [gf180mcu::mos_check $parameters]
 }
 
-proc gf180mcu::nfet_06v0_nat_check {parameters} {
+proc gf180mcu::nfet_06v0_nvt_check {parameters} {
    return [gf180mcu::mos_check $parameters]
 }
 
