diff --git a/xschem/.gitignore b/xschem/.gitignore
new file mode 100644
index 0000000..e9a03a2
--- /dev/null
+++ b/xschem/.gitignore
@@ -0,0 +1,3 @@
+*.ext
+sourceme
+xschemrc
diff --git a/xschem/xschemrc b/xschem/xschemrc
deleted file mode 100644
index ca6e33e..0000000
--- a/xschem/xschemrc
+++ /dev/null
@@ -1,296 +0,0 @@
-#### xschemrc system configuration file
-
-#### values may be overridden by user's ~/.xschem/xschemrc configuration file
-#### or by project-local ./xschemrc
-
-###########################################################################
-#### XSCHEM INSTALLATION DIRECTORY: XSCHEM_SHAREDIR
-###########################################################################
-#### Normally there is no reason to set this variable if using standard
-#### installation. Location of files is set at compile time but may be overridden
-#### with following line:
-# set XSCHEM_SHAREDIR $env(HOME)/share/xschem
-
-###########################################################################
-#### XSCHEM SYSTEM-WIDE DESIGN LIBRARY PATHS: XSCHEM_LIBRARY_PATH
-###########################################################################
-#### If unset xschem starts with XSCHEM_LIBRARY_PATH set to the default, typically:
-# /home/schippes/.xschem/xschem_library
-# /home/schippes/share/xschem/xschem_library/devices
-# /home/schippes/share/doc/xschem/examples
-# /home/schippes/share/doc/xschem/ngspice
-# /home/schippes/share/doc/xschem/logic
-# /home/schippes/share/doc/xschem/xschem_simulator
-# /home/schippes/share/doc/xschem/binto7seg
-# /home/schippes/share/doc/xschem/pcb
-# /home/schippes/share/doc/xschem/rom8k
-
-#### Allow user environment to override the path to the PDK
-if {[catch {set PDKPATH $env(PDKPATH)}]} {
-    set PDKPATH "/usr/share/pdk/sky130A"
-}
-#### Flush any previous definition
-set XSCHEM_LIBRARY_PATH {}
-#### include devices/*.sym
-append XSCHEM_LIBRARY_PATH ${XSCHEM_SHAREDIR}/xschem_library
-#### include skywater libraries. Here i use [pwd]. This works if i start xschem from here.
-append XSCHEM_LIBRARY_PATH :$env(PWD)
-append XSCHEM_LIBRARY_PATH :$PDKPATH/libs.tech/xschem
-# append XSCHEM_LIBRARY_PATH :/mnt/sda7/home/schippes/pdks/sky130A/libs.tech/xschem
-#### add ~/.xschem/xschem_library (USER_CONF_DIR is normally ~/.xschem)
-append XSCHEM_LIBRARY_PATH :$USER_CONF_DIR/xschem_library 
-
-###########################################################################
-#### SET CUSTOM COLORS FOR XSCHEM LIBRARIES MATCHING CERTAIN PATTERNS
-###########################################################################
-#### each line contains a dircolor(pattern) followed by a color
-#### color can be an ordinary name (grey, brown, blue) or a hex code {#77aaff}
-#### hex code must be enclosed in braces
-array unset dircolor
-set dircolor(sky130_fd_pr$) blue
-set dircolor(sky130_tests$) blue
-set dircolor(xschem_sky130$) blue
-set dircolor(xschem_library$) red
-set dircolor(devices$) red
-
-###########################################################################
-#### WINDOW TO OPEN ON STARTUP: XSCHEM_START_WINDOW
-###########################################################################
-#### Start without a design if no filename given on command line:
-#### To avoid absolute paths, use a path that is relative to one of the
-#### XSCHEM_LIBRARY_PATH directories. Default: empty
-set XSCHEM_START_WINDOW {sky130_tests/top.sch}
-
-###########################################################################
-#### DIRECTORY WHERE SIMULATIONS, NETLIST AND SIMULATOR OUTPUTS ARE PLACED
-###########################################################################
-#### If unset $USER_CONF_DIR/simulations is assumed (normally ~/.xschem/simulations) 
-# set netlist_dir $env(HOME)/.xschem/simulations
-set netlist_dir .
-
-###########################################################################
-#### CHANGE DEFAULT [] WITH SOME OTHER CHARACTERS FOR BUSSED SIGNALS 
-#### IN SPICE NETLISTS (EXAMPLE: DATA[7] --> DATA<7>) 
-###########################################################################
-#### default: empty (use xschem default, [ ])
-# set bus_replacement_char {<>}
-#### for XSPICE: replace square brackets as the are used for XSPICE vector nodes.
-# set bus_replacement_char {__} 
-
-###########################################################################
-#### SOME DEFAULT BEHAVIOR
-###########################################################################
-#### Allowed values:  spice, verilog, vhdl, tedax, default: spice
-# set netlist_type spice
-
-#### Some netlisting options (these are the defaults)
-# set hspice_netlist 1
-# set verilog_2001 1
-
-#### to use a fixed line with set change_lw to 0 and set some value to line_width
-#### these are the defaults
-# set line_width 0
-# set change_lw 1
-
-#### allow color postscript and svg exports. Default: 1, enable color
-# set color_ps 1
-
-#### initial size of xschem window you can specify also position with (wxh+x+y)
-#### this is the default:
-# set initial_geometry {900x600}
-
-#### if set to 0, when zooming out allow the viewport do drift toward the mouse position,
-#### allowing to move away by zooming / unzooming with mouse wheel
-#### default setting: 0
-# set unzoom_nodrift 0
-
-#### if set to 1 allow to place multiple components with same name.
-#### Warning: this is normally not allowed in any simulation netlist.
-#### default: 0, do not allow place multiple elements with same name (refdes)
-# set disable_unique_names 0
-
-#### if set to 1 continue drawing lines / wires after click
-#### default: 0
-# set persistent_command 1
-
-#### if set to 1 automatically join/trim wires while editing
-#### this may slow down on rally big designs. Can be disabled via menu 
-#### default: 0
-# set autotrim_wires 0
-
-#### set widget scaling (mainly for font display), this is useful on 4K displays
-#### default: unset (tk uses its default) > 1.0 ==> bigger 
-# set tk_scaling 1.7
-
-#### disable some symbol layers. Default: none, all layers are visible.
-# set enable_layer(5) 0 ;# example to disable pin red boxes
-
-#### enable to scale grid point size as done with lines at close zoom, default: 0
-# set big_grid_points 0
-
-###########################################################################
-#### EXPORT FORMAT TRANSLATORS, PNG AND PDF
-###########################################################################
-#### command to translate xpm to png; (assumes command takes source 
-#### and dest file as arguments, example: gm convert plot.xpm plot.png)
-#### default: {gm convert}
-# set to_png {gm convert}
-
-#### command to translate ps to pdf; (assumes command takes source
-#### and dest file as arguments, example: ps2pdf plot.ps plot.pdf)
-#### default: ps2pdf
-# set to_pdf ps2pdf
-set to_pdf {ps2pdf -dAutoRotatePages=/None}
-
-
-###########################################################################
-#### CUSTOM GRID / SNAP VALUE SETTINGS
-###########################################################################
-#### Warning: changing these values will likely break compatibility
-#### with existing symbol libraries. Defaults: grid 20, snap 10.
-# set grid 20
-# set snap 10
-
-###########################################################################
-#### CUSTOM COLORS  MAY BE DEFINED HERE
-###########################################################################
-#  set cadlayers 22
-#  set light_colors {
-#   "#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900"
-#   "#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa"
-#   "#880088" "#00ff00" "#0000cc" "#666600" "#557755"
-#   "#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b"
-#   "#ef6158" "#fdb200" }
-
-#  set dark_colors {
-#   "#000000" "#00ccee" "#3f3f3f" "#cccccc" "#88dd00"
-#   "#bb2200" "#00ccee" "#ff0000" "#ffff00" "#ffffff"
-#   "#ff00ff" "#00ff00" "#0000cc" "#aaaa00" "#aaccaa"
-#   "#ff7777" "#bfff81" "#00ffcc" "#ce0097" "#d2d46b"
-#   "#ef6158" "#fdb200" }
-
-###########################################################################
-#### CAIRO STUFF
-###########################################################################
-#### Scale all fonts by this number
-# set cairo_font_scale 1.0
-
-#### default for following two is 0.85 (xscale) and 0.88 (yscale) to 
-#### match cairo font spacing
-# set nocairo_font_xscale 1.0
-#### set nocairo_font_yscale 1.0
-
-#### Scale line spacing by this number
-# set cairo_font_line_spacing 1.0
-
-#### Specify a font
-# set cairo_font_name {Sans-Serif}
-# set svg_font_name {Sans-Serif}
-
-#### Lift up text by some zoom-corrected pixels for
-#### better compatibility wrt no cairo version.
-#### Useful values in the range [-1, 3]
-# set cairo_vert_correct 0
-# set nocairo_vert_correct 0
-
-###########################################################################
-#### KEYBINDINGS
-###########################################################################
-#### General format for specifying a replacement for a keybind
-#### Replace Ctrl-d with Escape (so you wont kill the program)
-# set replace_key(Control-d) Escape
-
-#### swap w and W keybinds; Always specify Shift for capital letters
-# set replace_key(Shift-W) w
-# set replace_key(w) Shift-W
-
-###########################################################################
-#### TERMINAL
-###########################################################################
-#### default for linux: xterm
-# set terminal {xterm -geometry 100x35 -fn 9x15 -bg black -fg white -cr white -ms white }
-#### lxterminal is not OK since it will not inherit env vars: 
-#### In order to reduce memory usage and increase the performance, all instances
-#### of the lxterminal are sharing a single process. LXTerminal is part of LXDE
-
-###########################################################################
-#### EDITOR
-###########################################################################
-#### editor must not detach from launching shell (-f mandatory for gvim)
-#### default for linux: gvim -f
-# set editor {gvim -f -geometry 90x28}
-# set editor { xterm -geometry 100x40 -e nano }
-# set editor { xterm -geometry 100x40 -e pico }
-
-#### For Windows
-# set editor {notepad.exe}
-
-###########################################################################
-#### SHOW ERC INFO WINDOW (erc errors, warnings etc)
-###########################################################################
-#### default: 0 (can be enabled by menu)
-# set show_infowindow 0
-
-###########################################################################
-#### CONFIGURE COMPUTER FARM JOB REDIRECTORS FOR SIMULATIONS
-###########################################################################
-#### RTDA NC
-# set computerfarm {nc run -Il}
-#### LSF BSUB
-# set computerfarm {bsub -Is}
-
-###########################################################################
-#### TCP CONNECTION WITH GAW
-###########################################################################
-#### set gaw address for socket connection: {host port}
-#### default: set to localhost, port 2020
-# set gaw_tcp_address {localhost 2020}
-
-###########################################################################
-#### XSCHEM LISTEN TO TCP PORT
-###########################################################################
-#### set xschem listening port; default: not enabled
-# set xschem_listen_port 2021
-
-###########################################################################
-#### BESPICE WAVE SOCKET CONNECTION
-###########################################################################
-#### set bespice wave listening port; default: not enabled
-set bespice_listen_port 2022
-
-
-
-###########################################################################
-#### UTILE SPICE STIMULI DESCRIPTION LANGUAGE AND TRANSLATOR
-###########################################################################
-#### default paths are set as shown here: 
-# set utile_gui_path ${XSCHEM_SHAREDIR}/utile/utile3
-# set utile_cmd_path ${XSCHEM_SHAREDIR}/utile/utile
-
-###########################################################################
-#### TCL FILES TO LOAD AT STARTUP
-###########################################################################
-#### list of tcl files to preload.
-# lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl
-lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl
-lappend tcl_files $PDKPATH/libs.tech/xschem/scripts/sky130_models.tcl
-###########################################################################
-#### XSCHEM TOOLBAR
-###########################################################################
-#### default: not enabled.
-# set toolbar_visible 1
-# set toolbar_horiz   1
-
-###########################################################################
-#### SKYWATER PDK SPECIFIC VARIABLES
-###########################################################################
-
-## (spice patched) skywater-pdk install
-# set SKYWATER_MODELS ~/skywater-pdk/libraries/sky130_fd_pr_ngspice/latest
-# set SKYWATER_STDCELLS ~/skywater-pdk/libraries/sky130_fd_sc_hd/latest
-
-## opencircuitdesign pdks install. You need to change these to point to your open_pdks installation
-# set SKYWATER_MODELS /usr/local/share/pdk/sky130A/libs.tech/ngspice
-# set SKYWATER_STDCELLS /usr/local/share/pdk/sky130A/libs.ref/sky130_fd_sc_hd/spice
-set SKYWATER_MODELS $PDKPATH/libs.tech/ngspice
-set SKYWATER_STDCELLS $PDKPATH/libs.ref/sky130_fd_sc_hd/spice
