diff --git a/common/cace.py b/common/cace.py
index 4443e75..cc4719b 100755
--- a/common/cace.py
+++ b/common/cace.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3 -B
 #
 #--------------------------------------------------------
-# Open Galaxy Project Manager GUI.
+# Project Manager GUI.
 #
 # This is a Python tkinter script that handles local
 # project management.  Much of this involves the
@@ -89,7 +89,7 @@
 #------------------------------------------------------
 
 class OpenGalaxyCharacterize(ttk.Frame):
-    """Open Galaxy local characterization GUI."""
+    """local characterization GUI."""
 
     def __init__(self, parent, *args, **kwargs):
         ttk.Frame.__init__(self, parent, *args, **kwargs)
@@ -207,7 +207,7 @@
         self.logfile = None
 
         # Root window title
-        self.root.title('Open Galaxy Characterization')
+        self.root.title('Characterization')
         self.root.option_add('*tearOff', 'FALSE')
         self.pack(side = 'top', fill = 'both', expand = 'true')
 
diff --git a/common/cace_datasheet_upload.py b/common/cace_datasheet_upload.py
index 171f325..5e9465d 100755
--- a/common/cace_datasheet_upload.py
+++ b/common/cace_datasheet_upload.py
@@ -20,7 +20,7 @@
 import config
 
 """
- Open Galaxy standalone script.
+ standalone script.
  Makes rest calls to marketplace REST server to save datasheet
  and associated file(s).  Request hash is generated so the two
  requests can be associated on the server side.  This action
diff --git a/common/cace_design_upload.py b/common/cace_design_upload.py
index 41e90f2..4b4c47f 100755
--- a/common/cace_design_upload.py
+++ b/common/cace_design_upload.py
@@ -22,7 +22,7 @@
 import config
 
 """
- Open Galaxy standalone script.
+ standalone script.
  Makes rest calls to marketplace REST server to save datasheet
  and associated file(s).  Request hash is generated so the two
  requests can be associated on the server side.  This action
diff --git a/common/create_project.py b/common/create_project.py
index 764a166..11ad1bc 100755
--- a/common/create_project.py
+++ b/common/create_project.py
@@ -59,7 +59,7 @@
             pdkpath = pdkname
             pdkname = os.path.split(pdkpath)[1]
         else:
-            pdkpath = os.path.join('/usr/share', 'pdk', pdkname)
+            pdkpath = os.path.join('PREFIX', 'pdk', pdkname)
     else:
         try:
             pdkpath = os.getenv()['PDK_PATH']
diff --git a/common/editparam.py b/common/editparam.py
index 06992a6..c31a1cd 100755
--- a/common/editparam.py
+++ b/common/editparam.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #-----------------------------------------------------------
-# Parameter editing for the Open Galaxy characterization tool
+# Parameter editing for the characterization tool
 #-----------------------------------------------------------
 # Written by Tim Edwards
 # efabless, inc.
diff --git a/common/failreport.py b/common/failreport.py
index 54c2ce9..df8127c 100755
--- a/common/failreport.py
+++ b/common/failreport.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #--------------------------------------------------------------------
-# Characterization Report Window for the Open Galaxy project manager
+# Characterization Report Window for the project manager
 #
 #--------------------------------------------------------------------
 # Written by Tim Edwards
@@ -21,7 +21,7 @@
 import cace_makeplot
 
 class FailReport(tkinter.Toplevel):
-    """Open Galaxy failure report window."""
+    """failure report window."""
 
     def __init__(self, parent=None, fontsize=11, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
@@ -48,7 +48,7 @@
                         foreground = 'brown', border = 0, relief = 'groove')
 
         self.withdraw()
-        self.title('Open Galaxy Local Characterization Report')
+        self.title('Local Characterization Report')
         self.root = parent.root
         self.rowconfigure(0, weight = 1)
         self.columnconfigure(0, weight = 1)
diff --git a/common/foundry_nodes.py b/common/foundry_nodes.py
index b431eff..fba9132 100755
--- a/common/foundry_nodes.py
+++ b/common/foundry_nodes.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 
 # foundry_nodes.py ---
 #
diff --git a/common/helpwindow.py b/common/helpwindow.py
index 176e1b0..8c9d7db 100755
--- a/common/helpwindow.py
+++ b/common/helpwindow.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #--------------------------------------------------------
-# Help Window for the Open Galaxy project manager
+# Help Window for the Project manager
 #
 #--------------------------------------------------------
 # Written by Tim Edwards
@@ -15,7 +15,7 @@
 from tkinter import ttk
 
 class HelpWindow(tkinter.Toplevel):
-    """Open Galaxy help window."""
+    """help window"""
 
     def __init__(self, parent=None, fontsize = 11, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
@@ -26,7 +26,7 @@
         self.protocol("WM_DELETE_WINDOW", self.close)
 
         self.withdraw()
-        self.title('Open Galaxy Help')
+        self.title('Help')
 
         self.helptitle = ttk.Label(self, style='title.TLabel', text = '(no text)')
         self.helptitle.grid(column = 0, row = 0, sticky = "news")
diff --git a/common/profile.py b/common/profile.py
index befa426..2fb3e0b 100755
--- a/common/profile.py
+++ b/common/profile.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #------------------------------------------------------------
-# Profile settings window for the Open Galaxy project manager
+# Profile settings window for the project manager
 #
 #------------------------------------------------------------
 # Written by Tim Edwards
@@ -20,7 +20,7 @@
 import config
 
 class Profile(tkinter.Toplevel):
-    """Open Galaxy project manager profile settings management."""
+    """Project manager profile settings management."""
 
     def __init__(self, parent=None, fontsize = 11, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
@@ -31,7 +31,7 @@
         self.protocol("WM_DELETE_WINDOW", self.close)
         self.parent = parent
         self.withdraw()
-        self.title('Open Galaxy Project Manager Profile Settings')
+        self.title('Project Manager Profile Settings')
         self.sframe = tkinter.Frame(self)
         self.sframe.grid(column = 0, row = 0, sticky = "news")
 
diff --git a/common/project_manager.py b/common/project_manager.py
index 17774d6..441f852 100755
--- a/common/project_manager.py
+++ b/common/project_manager.py
@@ -53,7 +53,7 @@
 #------------------------------------------------------
 
 class SplashScreen(tkinter.Toplevel):
-    """Open Galaxy Project Management Splash Screen"""
+    """Project Management Splash Screen"""
 
     def __init__(self, parent, *args, **kwargs):
         super().__init__(parent, *args, **kwargs)
@@ -576,11 +576,11 @@
         return 'okay'
 
 #------------------------------------------------------
-# Open Galaxy Manager class
+# Project Manager class
 #------------------------------------------------------
 
 class OpenGalaxyManager(ttk.Frame):
-    """Open Galaxy Project Management GUI."""
+    """Project Management GUI."""
 
     def __init__(self, parent, *args, **kwargs):
         super().__init__(parent, *args, **kwargs)
@@ -669,7 +669,7 @@
         self.project_name = ""
 
         # Root window title
-        self.root.title('Open Galaxy Project Manager')
+        self.root.title('Project Manager')
         self.root.option_add('*tearOff', 'FALSE')
         self.pack(side = 'top', fill = 'both', expand = 'true')
 
@@ -2142,7 +2142,7 @@
         pname = os.path.split(ppath)[1]
 
         print('Cloudv project name is ' + str(oname))
-        print('New Open Galaxy project name is ' + str(pname))
+        print('New project name is ' + str(pname))
 
         os.makedirs(ppath + '/verilog', exist_ok=True)
 
diff --git a/common/settings.py b/common/settings.py
index a1c48f2..37899fa 100755
--- a/common/settings.py
+++ b/common/settings.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #-----------------------------------------------------------
-# Settings window for the Open Galaxy characterization tool
+# Settings window for the characterization tool
 #
 #-----------------------------------------------------------
 # Written by Tim Edwards
@@ -15,7 +15,7 @@
 from tkinter import ttk
 
 class Settings(tkinter.Toplevel):
-    """Open Galaxy characterization tool settings management."""
+    """characterization tool settings management."""
 
     def __init__(self, parent=None, fontsize = 11, callback = None, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
@@ -26,7 +26,7 @@
         self.protocol("WM_DELETE_WINDOW", self.close)
         self.parent = parent
         self.withdraw()
-        self.title('Open Galaxy Characterization Tool Settings')
+        self.title('Characterization Tool Settings')
         self.sframe = tkinter.Frame(self)
         self.sframe.grid(column = 0, row = 0, sticky = "news")
 
diff --git a/common/simhints.py b/common/simhints.py
index 0d1d0cb..e3885be 100755
--- a/common/simhints.py
+++ b/common/simhints.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #-----------------------------------------------------------
-# Simulation hints management for the Open Galaxy
+# Simulation hints management for the
 # characterization tool
 #-----------------------------------------------------------
 # Written by Tim Edwards
diff --git a/common/soc_floorplanner.py b/common/soc_floorplanner.py
index 1cdc52c..d7b8196 100755
--- a/common/soc_floorplanner.py
+++ b/common/soc_floorplanner.py
@@ -78,7 +78,7 @@
 #------------------------------------------------
 
 class SoCFloorplanner(ttk.Frame):
-    """Open Galaxy Pad Frame Generator."""
+    """Pad Frame Generator."""
 
     def __init__(self, parent = None, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
diff --git a/common/symbolbuilder.py b/common/symbolbuilder.py
index 23532d4..4a89196 100755
--- a/common/symbolbuilder.py
+++ b/common/symbolbuilder.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #
 #--------------------------------------------------------
-# Symbol Builder for the Open Galaxy project manager
+# Symbol Builder for the project manager
 #
 #--------------------------------------------------------
 # Written by Tim Edwards
@@ -14,7 +14,7 @@
 from tkinter import ttk
 
 class SymbolBuilder(tkinter.Toplevel):
-    """Open Galaxy symbol builder."""
+    """symbol builder."""
 
     def __init__(self, parent = None, pinlist = None, fontsize = 11, *args, **kwargs):
         '''See the __init__ for Tkinter.Toplevel.'''
@@ -25,7 +25,7 @@
         s = ttk.Style()
         s.configure('normal.TButton', font=('Helvetica', fontsize), border = 3, relief = 'raised')
 
-        self.title('Open Galaxy Symbol Builder')
+        self.title('Symbol Builder')
         self.pframe = tkinter.Frame(self)
         self.pframe.grid(column = 0, row = 0, sticky = "news")
 
