diff --git a/cat_generate.py b/cat_generate.py
index 843e145..28c8133 100644
--- a/cat_generate.py
+++ b/cat_generate.py
@@ -18,9 +18,9 @@
 def remap_path(old_path, lib, new_lib, output_dir, additional = ""):
     """
     >>> remap_path("../skywater-src-nda/s8/V1.0.0/VirtuosoOA/libs/s8phirs_10r/Capacitors.Cat", "s8phirs_10r", "skywater_130_fd_pr_base", "output")
-    'output/skywater-pdk/libraries/skywater_130_fd_pr_base/V1.0.0/cells/Capacitors.Cat'
+    'output/skywater-pdk/libraries/skywater_130_fd_pr/V1.0.0/cells/Capacitors.Cat'
     >>> remap_path("../skywater-src-nda/s8/V1.0.0/VirtuosoOA/libs/s8phirs_10r/s8phirs_10r.TopCat", "s8phirs_10r", "skywater_130_fd_pr_base", "output")
-    'output/skywater-pdk/libraries/skywater_130_fd_pr_base/V1.0.0/cells/skywater_130_fd_pr_base.TopCat'
+    'output/skywater-pdk/libraries/skywater_130_fd_pr/V1.0.0/cells/skywater_130_fd_pr_base.TopCat'
     """
     output_dir = str(output_dir)
     try:
@@ -74,7 +74,6 @@
 
 def move_to_dir(src_dir, dest):
     contents = os.listdir(src_dir)
-    print(contents)
     for element in contents:
         move(element, dest)
 
@@ -105,7 +104,7 @@
                 line = line.replace(old_path, new_path)
                 old_path = os.path.join(parent, old_path)
                 new_path = os.path.join(parent, new_path)
-                if os.path.isdir(new_path):
+                if os.path.isdir(new_path)  or line.find('type="category"') != -1:
                     pass
                 else:
                     if not debug:
@@ -128,6 +127,10 @@
     filename = filename.split(".")[0]
     lib = lib_extract_from_path(cat_file)
     new_lib = convert_libname(lib)
+    if lib == '???' and cat_file.find('/s8/') != -1:
+        lib = 's8'
+        new_lib = 'sky130_fd_pr'
+
     with open(cat_file, 'r') as in_f:
         contents = in_f.read()
     # correct old convention
@@ -177,10 +180,11 @@
         files = sorted(args.input.rglob('*Cat'))
         for f in files:
             f = str(f)
-            if 'sram' in f or '_dv/' in f:
+            if 'sram' in f or '_dv/' in f or '/QA_s8_rdc/' in f:
                 # print("unable to figure new_path :" + f)
+                #
                 continue
-            print(f)
+            print("##    "+f)
             main(f, args.output)
     with open(args.sourcestodest, 'w') as srctodest:
         json.dump(sourcestodest, srctodest, indent = 2)
