git.lucas.co / hou-control
git clone https://git.lucas.co/hou-control.git

commit78f77989d0b8b0d31936072486ed43e4009cce71
parent18184d01fa
authorLucas Galante <[email protected]>
date2026-03-25 12:45
Switch to codeberg

 MainMenuCommon.xml                                 |    2 +-
 config/3DSceneColors.dark                          |  331 +++---
 config/NodeGraphDark.inc                           |  386 +++----
 config/NodeShapes/squared.json                     |   36 +-
 config/UIDark.hcs                                  | 1208 ++++++++++----------
 config/UIDark_unused.inc                           |  384 +++----
 config/hc_colors.inc                               |  116 +-
 desktop/hc_desktop.desk                            |   24 +-
 houdini-studio-utils.json                          |    9 +-
 otls/sop_lsgalante.im_arrow.1.0.hdalc              |  Bin 4255 -> 4377 bytes
 otls/sop_lsgalante.im_attractor.1.1.hdalc          |  Bin 12446 -> 14617 bytes
 otls/sop_lsgalante.im_attribute_adjust.1.0.hdalc   |  Bin 8305 -> 7304 bytes
 otls/sop_lsgalante.im_bend.1.0.hdalc               |  Bin 10166 -> 10981 bytes
 otls/sop_lsgalante.im_blaster.1.0.hdalc            |  Bin 19013 -> 18956 bytes
 otls/sop_lsgalante.im_clip.1.0.hdalc               |  Bin 11769 -> 11967 bytes
 otls/sop_lsgalante.im_color.1.0.hdalc              |  Bin 9144 -> 9349 bytes
 otls/sop_lsgalante.im_connectivity.1.0.hdalc       |  Bin 3890 -> 4053 bytes
 otls/sop_lsgalante.im_constant.1.0.hdalc           |  Bin 6673 -> 6837 bytes
 otls/sop_lsgalante.im_copy.1.0.hdalc               |  Bin 6231 -> 6332 bytes
 otls/sop_lsgalante.im_curl.1.2.hdalc               |  Bin 9863 -> 10217 bytes
 otls/sop_lsgalante.im_diagnostic.1.0.hdalc         |  Bin 4891 -> 5026 bytes
 otls/sop_lsgalante.im_direction.1.0.hdalc          |  Bin 5875 -> 6011 bytes
 otls/sop_lsgalante.im_dissolve.1.0.hdalc           |  Bin 6542 -> 6719 bytes
 otls/sop_lsgalante.im_dissolve_point.1.0.hdalc     |  Bin 5789 -> 5934 bytes
 otls/sop_lsgalante.im_distance.1.0.hdalc           |  Bin 9301 -> 9296 bytes
 otls/sop_lsgalante.im_distrubution.1.0.hdalc       |  Bin 21161 -> 21080 bytes
 otls/sop_lsgalante.im_dot.1.0.hdalc                |  Bin 6066 -> 6223 bytes
 otls/sop_lsgalante.im_evaluate_curve.1.0.hdalc     |  Bin 11076 -> 12273 bytes
 otls/sop_lsgalante.im_extrude.1.0.hdalc            |  Bin 10854 -> 11109 bytes
 otls/sop_lsgalante.im_fast_clip.1.0.hdalc          |  Bin 8162 -> 8380 bytes
 otls/sop_lsgalante.im_float_ramp.1.0.hdalc         |  Bin 9262 -> 9518 bytes
 otls/sop_lsgalante.im_gate.1.0.hdalc               |  Bin 14392 -> 14824 bytes
 otls/sop_lsgalante.im_gem.1.0.hdalc                |  Bin 8247 -> 8400 bytes
 otls/sop_lsgalante.im_group.1.0.hdalc              |  Bin 11641 -> 11872 bytes
 otls/sop_lsgalante.im_group_split.1.0.hdalc        |  Bin 8676 -> 8760 bytes
 otls/sop_lsgalante.im_manipulator.1.0.hdalc        |  Bin 6072 -> 6045 bytes
 otls/sop_lsgalante.im_matcap.1.0.hdalc             |  Bin 19388 -> 19053 bytes
 otls/sop_lsgalante.im_membership.1.0.hdalc         |  Bin 3579 -> 3708 bytes
 otls/sop_lsgalante.im_neighbours.1.0.hdalc         |  Bin 12558 -> 12631 bytes
 otls/sop_lsgalante.im_notebook.1.0.hdalc           |  Bin 3584 -> 3697 bytes
 otls/sop_lsgalante.im_number_generator.1.0.hdalc   |  Bin 4346 -> 4522 bytes
 otls/sop_lsgalante.im_onion.1.0.hdalc              |  Bin 25463 -> 10310 bytes
 otls/sop_lsgalante.im_orient.1.1.hdalc             |  Bin 7282 -> 7390 bytes
 otls/sop_lsgalante.im_permutate.1.0.hdalc          |  Bin 7758 -> 7540 bytes
 otls/sop_lsgalante.im_plane.1.0.hdalc              |  Bin 9324 -> 9487 bytes
 otls/sop_lsgalante.im_point.1.0.hdalc              |  Bin 8198 -> 9304 bytes
 otls/sop_lsgalante.im_point_mover.1.0.hdalc        |  Bin 6450 -> 6437 bytes
 otls/sop_lsgalante.im_point_proximity.1.0.hdalc    |  Bin 8520 -> 8610 bytes
 otls/sop_lsgalante.im_prim_distance.1.0.hdalc      |  Bin 8920 -> 9154 bytes
 otls/sop_lsgalante.im_prim_proximity.1.0.hdalc     |  Bin 7465 -> 7641 bytes
 otls/sop_lsgalante.im_promote.1.0.hdalc            |  Bin 9561 -> 9864 bytes
 otls/sop_lsgalante.im_ramp_float.1.0.hdalc         |  Bin 9202 -> 9443 bytes
 otls/sop_lsgalante.im_random_walk.1.0.hdalc        |  Bin 8270 -> 8403 bytes
 otls/sop_lsgalante.im_reindex.1.0.hdalc            |  Bin 7758 -> 7942 bytes
 otls/sop_lsgalante.im_relax.1.0.hdalc              |  Bin 8869 -> 8867 bytes
 otls/sop_lsgalante.im_remesh.1.0.hdalc             |  Bin 7032 -> 7161 bytes
 otls/sop_lsgalante.im_sample.1.0.hdalc             |  Bin 9874 -> 9924 bytes
 otls/sop_lsgalante.im_select.2.0.hdalc             |  Bin 17352 -> 17399 bytes
 otls/sop_lsgalante.im_sharpen.1.0.hdalc            |  Bin 10255 -> 11058 bytes
 otls/sop_lsgalante.im_shortest_path.1.0.hdalc      |  Bin 8726 -> 8919 bytes
 otls/sop_lsgalante.im_shrink.1.1.hdalc             |  Bin 11550 -> 11637 bytes
 otls/sop_lsgalante.im_skeletonize.1.0.hdalc        |  Bin 56799 -> 56925 bytes
 otls/sop_lsgalante.im_soft_transform.1.0.hdalc     |  Bin 0 -> 6570 bytes
 otls/sop_lsgalante.im_sort.1.1.hdalc               |  Bin 7824 -> 7982 bytes
 otls/sop_lsgalante.im_special_square.1.0.hdalc     |  Bin 16877 -> 17153 bytes
 otls/sop_lsgalante.im_square.1.0.hdalc             |  Bin 8976 -> 9182 bytes
 otls/sop_lsgalante.im_star.1.0.hdalc               |  Bin 8889 -> 8882 bytes
 otls/sop_lsgalante.im_transfer.1.1.hdalc           |  Bin 7830 -> 7584 bytes
 otls/sop_lsgalante.im_transform.1.0.hdalc          |  Bin 5610 -> 5807 bytes
 otls/sop_lsgalante.im_triangle.1.0.hdalc           |  Bin 5643 -> 5731 bytes
 otls/sop_lsgalante.im_twist.1.0.hdalc              |  Bin 10660 -> 10701 bytes
 otls/sop_lsgalante.im_valence.1.0.hdalc            |  Bin 10730 -> 10786 bytes
 otls/sop_lsgalante.im_wave.1.0.hdalc               |  Bin 9364 -> 9496 bytes
 python3.11libs/hc/bindings.py                      |  308 -----
 python3.11libs/hc/hcbindings.py                    |   49 +
 python3.11libs/hc/{cam.py => hccam.py}             |   30 +-
 python3.11libs/hc/hcconfigloader.py                |    6 +
 .../hc/{defaultcam.py => hcdefaultcam.py}          |    6 +-
 python3.11libs/hc/{geo.py => hcgeo.py}             |    8 +-
 python3.11libs/hc/{guides.py => hcguides.py}       |   63 +-
 python3.11libs/hc/{layouts.py => hclayouts.py}     |   54 +-
 python3.11libs/hc/{listener.py => hclistener.py}   |    0
 python3.11libs/hc/{menuutils.py => hcmenuutils.py} |    0
 .../hc/{networkeditor.py => hcnetworkeditor.py}    |    3 +
 python3.11libs/hc/{node.py => hcnode.py}           |    0
 python3.11libs/hc/hcpane.py                        |  125 ++
 python3.11libs/hc/{panel.py => hcpanel.py}         |   27 +-
 python3.11libs/hc/{pathtab.py => hcpathtab.py}     |   22 +-
 python3.11libs/hc/hcprefs.py                       |    3 +
 python3.11libs/hc/{radial.py => hcradial.py}       |   58 +-
 .../hc/{sceneviewer.py => hcsceneviewer.py}        |   93 +-
 python3.11libs/hc/{session.py => hcsession.py}     |   83 +-
 python3.11libs/hc/{status.py => hcstatus.py}       |    4 +-
 python3.11libs/hc/{tab.py => hctab.py}             |   35 +-
 python3.11libs/hc/hcviewport.py                    |   18 +
 .../hc/{visualizers.py => hcvisualizers.py}        |    8 +-
 python3.11libs/hc/{widgets.py => hcwidgets.py}     |    0
 python3.11libs/hc/pane.py                          |  127 --
 python3.11libs/hc/prefs.py                         |    3 -
 python3.11libs/hc/viewport.py                      |   15 -
 python3.11libs/nodegraphhooks.py                   |    8 +-
 readme.md                                          |   45 +
 scripts/OnCreated.py                               |    2 +-
 scripts/hotkeys_assign.json                        |   65 ++
 scripts/hotkeys_clear.json                         |  132 +++
 scripts/settings.json                              |    4 +-
 viewer_states/keycam.py                            |    7 +-
 107 files changed, 1950 insertions(+), 1957 deletions(-)

diff --git a/MainMenuCommon.xml b/MainMenuCommon.xml
index 2a48d94..de01c00 100755
--- a/MainMenuCommon.xml
+++ b/MainMenuCommon.xml
@@ -23,7 +23,7 @@
 
       <scriptItem id="h.hc_session_keycam">
         <label>Keycam</label>
-        <scriptCode><![CDATA[from hc import Session; Session().keycam()]]></scriptCode>
+        <scriptCode><![CDATA[from hc import Session; Session().currentTab().keycam()]]></scriptCode>
       </scriptItem>
 
       <scriptItem id="h.hc_session_reloadcolors">
diff --git a/config/3DSceneColors.dark b/config/3DSceneColors.dark
index 11d4e8c..6a5ca81 100644
--- a/config/3DSceneColors.dark
+++ b/config/3DSceneColors.dark
@@ -1,193 +1,192 @@
-# BackgroundColor:       0.00 0.00 0.00   # bg - top
-BackgroundColor:       0.1175 0.1188 0.1214
-BackgroundBottomColor: @BackgroundColor # bg - bottom
-XaxesColor:            1.00 0.00 0.00   # sticky x axis
-YaxesColor:            0.00 1.00 0.00   # sticky y axis
-ZaxesColor:            0.00 0.00 1.00   # sticky z axis
+BackgroundColor:               0.1175 0.1188 0.1214
+BackgroundBottomColor:         @BackgroundColor # bg - bottom
+XaxesColor:                    1.00 0.00 0.00   # sticky x axis
+YaxesColor:                    0.00 1.00 0.00   # sticky y axis
+ZaxesColor:                    0.00 0.00 1.00   # sticky z axis
 
 # Bounding box
 
-BBoxOutlineColor: 0.40 0.40 0.40 # wireframe
-BBoxOutlineAlpha: ALPHA 0.75     # wireframe alpha (*approx)
-BBoxSolidColor:   0.35 0.35 0.35 # wireframe
-BBoxSolidAlpha:   ALPHA 0.75     # shaded alpha (approx*)
+BBoxOutlineColor:              0.40 0.40 0.40 # wireframe
+BBoxOutlineAlpha:              ALPHA 0.75     # wireframe alpha (*approx)
+BBoxSolidColor:                0.35 0.35 0.35 # wireframe
+BBoxSolidAlpha:                ALPHA 0.75     # shaded alpha (approx*)
 
 # Geometry - Points
-PointColor:              0.40 1.00 1.00 # pt info unselected
-SelectedPointColor:      1.00 1.00 0.00 # pt info selected
-PointLocateColor:        0.60 0.90 1.00 # hover - pt
-PointLocateRemoveColor:  1.00 0.10 0.10 # hover - pt
-PointLocateToggleColor:  0.70 0.30 0.60 # hover - pt
-PointLocateAlpha:        ALPHA 1.00     # hover - pt overlay alpha
-PointTrailColor:         0.00 0.58 0.58 # pt trail - unselected
-SelectedPointTrailColor: 0.80 0.30 0.30 # pt trail - selected
+PointColor:                    0.40 1.00 1.00 # pt info unselected
+SelectedPointColor:            1.00 1.00 0.00 # pt info selected
+PointLocateColor:              0.60 0.90 1.00 # hover - pt
+PointLocateRemoveColor:        1.00 0.10 0.10 # hover - pt
+PointLocateToggleColor:        0.70 0.30 0.60 # hover - pt
+PointLocateAlpha:              ALPHA 1.00     # hover - pt overlay alpha
+PointTrailColor:               0.00 0.58 0.58 # pt trail - unselected
+SelectedPointTrailColor:       0.80 0.30 0.30 # pt trail - selected
 
 # Geometry - Primitives
-PrimClosureColor:          0.15 0.40 0.25 # unselected prims
-PrimLocateColor:           0.40 0.75 1.00 # hover - prim
-PrimLocateRemoveColor:     0.95 0.30 0.30 # hover - prim
-PrimLocateToggleColor:     0.50 0.15 0.60 # hover - prim
-PrimLocateAlpha:           ALPHA 0.40     # hover - prim overlay alpha
-BackfaceTintColor:         0.04 0.12 0.30 # backfacing poly tint, when enabled
-BackfaceTintAlpha:         ALPHA 0.66     # backfacing poly tint blend
-AuxSelectedPrimColor1:     1.00 1.00 0.00 # 1st template selection prims
-AuxSelectedPrimColor2:     0.00 1.00 1.00 # 2nd template selection prims
-PrimInfoColor:             1.00 0.78 1.00 # prim-vtx, prim-num, prim-normal
-SelectedPrimInfoColor:     1.00 0.78 0.70 # selected prim-vtx, prim-num, prim-normal
-WireframeColor:            0.80 0.80 0.73 # non-selected prims
-SelectedPrimColor:         1.00 0.80 0.30 # selected prims
-UsdSelectedPrimitiveAlpha: ALPHA 0.20     # selected USD prims
-UsdModifiedPrimitiveColor: 0.00 1.00 1.00 # current state modified USD prims
-UsdModifiedPrimitiveAlpha: ALPHA 0.20     # current state modified USD prims
+PrimClosureColor:              0.15 0.40 0.25 # unselected prims
+PrimLocateColor:               0.40 0.75 1.00 # hover - prim
+PrimLocateRemoveColor:         0.95 0.30 0.30 # hover - prim
+PrimLocateToggleColor:         0.50 0.15 0.60 # hover - prim
+PrimLocateAlpha:               ALPHA 0.40     # hover - prim overlay alpha
+BackfaceTintColor:             0.04 0.12 0.30 # backfacing poly tint, when enabled
+BackfaceTintAlpha:             ALPHA 0.66     # backfacing poly tint blend
+AuxSelectedPrimColor1:         1.00 1.00 0.00 # 1st template selection prims
+AuxSelectedPrimColor2:         0.00 1.00 1.00 # 2nd template selection prims
+PrimInfoColor:                 1.00 0.78 1.00 # prim-vtx, prim-num, prim-normal
+SelectedPrimInfoColor:         1.00 0.78 0.70 # selected prim-vtx, prim-num, prim-normal
+WireframeColor:                0.80 0.80 0.73 # non-selected prims
+SelectedPrimColor:             1.00 0.80 0.30 # selected prims
+UsdSelectedPrimitiveAlpha:     ALPHA 0.20     # selected USD prims
+UsdModifiedPrimitiveColor:     0.00 1.00 1.00 # current state modified USD prims
+UsdModifiedPrimitiveAlpha:     ALPHA 0.20     # current state modified USD prims
 
 # Geometry - Edges
-EdgeLocateColor:       0.60 0.90 1.00 # hover
-EdgeLocateRemoveColor: 1.00 0.10 0.10 # hover
-EdgeLocateToggleColor: 0.70 0.30 0.60 # hover
-EdgeLocateAlpha:       ALPHA 1.00     # hover alpha
-EdgeTipColor:          0.10 0.90 0.40 # selection direction hint
+EdgeLocateColor:               0.60 0.90 1.00 # hover
+EdgeLocateRemoveColor:         1.00 0.10 0.10 # hover
+EdgeLocateToggleColor:         0.70 0.30 0.60 # hover
+EdgeLocateAlpha:               ALPHA 1.00     # hover alpha
+EdgeTipColor:                  0.10 0.90 0.40 # selection direction hint
 
 # Geometry - Vertices
-VertexLocateColor:       0.60 0.90 1.00 # hover
-VertexLocateRemoveColor: 1.00 0.10 0.10 # hover
-VertexLocateToggleColor: 0.70 0.30 0.60 # hover
-VertexLocateAlpha:       ALPHA 1.00     # hover alpha
+VertexLocateColor:             0.60 0.90 1.00 # hover
+VertexLocateRemoveColor:       1.00 0.10 0.10 # hover
+VertexLocateToggleColor:       0.70 0.30 0.60 # hover
+VertexLocateAlpha:             ALPHA 1.00     # hover alpha
 
 # Geometry - Breakpoints
-BreakpointLocateColor:       0.60 0.90 1.00 # hover
-BreakpointLocateRemoveColor: 1.00 0.30 0.30 # hover
-BreakpointLocateToggleColor: 0.70 0.30 0.60 # hover
-BreakpointLocateAlpha:       ALPHA 1.00     # hover alpha
+BreakpointLocateColor:         0.60 0.90 1.00 # hover
+BreakpointLocateRemoveColor:   1.00 0.30 0.30 # hover
+BreakpointLocateToggleColor:   0.70 0.30 0.60 # hover
+BreakpointLocateAlpha:         ALPHA 1.00     # hover alpha
 
 # Geometry - Curves
-CurveEndPointColor:       0.65 0.15 0.25 # curve state - end points
-CurveBranchPointColor:    0.40 0.40 1.00 # curve state - branch points
-CurveBranchEndPointColor: 0.55 0.30 0.65 # curve state - branch-end points
+CurveEndPointColor:            0.65 0.15 0.25 # curve state - end points
+CurveBranchPointColor:         0.40 0.40 1.00 # curve state - branch points
+CurveBranchEndPointColor:      0.55 0.30 0.65 # curve state - branch-end points
 
 # Geo - Objects
-ObjectSelectColor:     1.00 1.00 0.00 # selection highlight
-ObjectSelectHintColor: 0.50 0.80 0.00 # selection hint highlight
-ObjectCurrentColor:    1.00 0.85 0.00 # current highlight
-ObjectGhostColor:      0.30 0.30 0.30 # color blended into object when ghosted
-ObjectGhostAlpha:      ALPHA 0.75     # alpha for color/ghost mixing
-ObjectNameColor:       1.00 0.30 0.30 # name guides
+ObjectSelectColor:             1.00 1.00 0.00 # selection highlight
+ObjectSelectHintColor:         0.50 0.80 0.00 # selection hint highlight
+ObjectCurrentColor:            1.00 0.85 0.00 # current highlight
+ObjectGhostColor:              0.30 0.30 0.30 # color blended into object when ghosted
+ObjectGhostAlpha:              ALPHA 0.75     # alpha for color/ghost mixing
+ObjectNameColor:               1.00 0.30 0.30 # name guides
 
 # Geo - other
-AuxGeoColor:                 0.70 0.40 0.40 # spline/quadric hulls
-SelectedAuxGeoColor:         0.90 0.60 0.70 # selected spline/quadric hulls
-BoundaryColor:               0.10 0.20 0.90 # geo boundary decoration
-WireOverColor:               0.20 0.20 0.20 # Wire Shaded mode wires
-GhostFillColor:              0.30 0.30 0.30 # hidden-line ghost fill
-CookSelectColor:             0.90 0.60 0.00 # cook selection points/prims
-FillSelectionAlpha:          ALPHA 0.50     # shading/select blend factor
-FillSelectionWireOverAlpha:  ALPHA 0.25     # shading/select blend factor
+AuxGeoColor:                   0.70 0.40 0.40 # spline/quadric hulls
+SelectedAuxGeoColor:           0.90 0.60 0.70 # selected spline/quadric hulls
+BoundaryColor:                 0.10 0.20 0.90 # geo boundary decoration
+WireOverColor:                 0.20 0.20 0.20 # Wire Shaded mode wires
+GhostFillColor:                0.30 0.30 0.30 # hidden-line ghost fill
+CookSelectColor:               0.90 0.60 0.00 # cook selection points/prims
+FillSelectionAlpha:            ALPHA 0.50     # shading/select blend factor
+FillSelectionWireOverAlpha:    ALPHA 0.25     # shading/select blend factor
 
 
 # Grids
 
-CplaneColor:             0.35 0.40 0.40 # unselected
-ActiveCplaneColor:       0.30 0.45 0.45 # unselected active
-SelectedCplaneColor:     1.00 0.51 0.80 # selected
-CplaneAlpha:             ALPHA 0.10     # amount of shading between grid lines
-CplaneLineAlpha:         ALPHA 0.30     # grid line alpha
-CplaneLineFadedAlpha:    ALPHA 0.10     # faded grid line alpha
-CPlaneHandleXlateColor:  0.45 0.00 0.90 # cplane translate axes
-CPlaneHandleRotateColor: 0.65 0.15 0.25 # cplane rotation
-CPlaneHandleBorderColor: 0.45 0.00 0.90 # cplane scale border
-GridColor:               0.40 0.45 0.50 # grid
-GridLineAlpha:           ALPHA 0.30     # grid line alpha
-GridLineFadedAlpha:      ALPHA 0.20     # faded grid line alpha
-GridXRulerColor:         0.70 0.50 0.50 # x ruler
-GridYRulerColor:         0.50 0.70 0.50 # y ruler
-GridZRulerColor:         0.50 0.50 0.70 # z ruler
-GridRulerAlpha:          ALPHA 0.60     # ruler alpha
-GridRulerFadedAlpha:     ALPHA 0.40     # faded ruler alpha
-OrthoGridColor:       0.40 0.45 0.50 # ortho viewport grid lines
-OrthoGridOriginColor: 0.30 0.30 0.30 # ortho viewport origin lines
+CplaneColor:                   0.35 0.40 0.40 # unselected
+ActiveCplaneColor:             0.30 0.45 0.45 # unselected active
+SelectedCplaneColor:           1.00 0.51 0.80 # selected
+CplaneAlpha:                   ALPHA 0.10     # amount of shading between grid lines
+CplaneLineAlpha:               ALPHA 0.30     # grid line alpha
+CplaneLineFadedAlpha:          ALPHA 0.10     # faded grid line alpha
+CPlaneHandleXlateColor:        0.45 0.00 0.90 # cplane translate axes
+CPlaneHandleRotateColor:       0.65 0.15 0.25 # cplane rotation
+CPlaneHandleBorderColor:       0.45 0.00 0.90 # cplane scale border
+GridColor:                     0.40 0.45 0.50 # grid
+GridLineAlpha:                 ALPHA 0.30     # grid line alpha
+GridLineFadedAlpha:            ALPHA 0.20     # faded grid line alpha
+GridXRulerColor:               0.70 0.50 0.50 # x ruler
+GridYRulerColor:               0.50 0.70 0.50 # y ruler
+GridZRulerColor:               0.50 0.50 0.70 # z ruler
+GridRulerAlpha:                ALPHA 0.60     # ruler alpha
+GridRulerFadedAlpha:           ALPHA 0.40     # faded ruler alpha
+OrthoGridColor:                0.40 0.45 0.50 # ortho viewport grid lines
+OrthoGridOriginColor:          0.30 0.30 0.30 # ortho viewport origin lines
 
 # Guides
 
-Guide1Color:        0.40 0.40 1.00 # 1st guide
-Guide2Color:        0.20 0.50 1.00 # 2nd guide
-LopIncludeBoxGuide: 0.40 0.40 1.00 # "include" bbox guide
-LopExcludeBoxGuide: 1.00 0.40 0.40 # "exclude" bbox guide
-LopSubnetGuide1:    0.40 0.40 1.00 # subnet first guide
-LopSubnetGuide2:    1.00 0.40 0.40 # subnet second guide
-LopSubnetGuide3:    0.40 1.00 0.40 # subnet third guide
+Guide1Color:                   0.40 0.40 1.00 # 1st guide
+Guide2Color:                   0.20 0.50 1.00 # 2nd guide
+LopIncludeBoxGuide:            0.40 0.40 1.00 # "include" bbox guide
+LopExcludeBoxGuide:            1.00 0.40 0.40 # "exclude" bbox guide
+LopSubnetGuide1:               0.40 0.40 1.00 # subnet first guide
+LopSubnetGuide2:               1.00 0.40 0.40 # subnet second guide
+LopSubnetGuide3:               0.40 1.00 0.40 # subnet third guide
 
 # Handles
 
-HandlePivotColor:           0.40 0.40 1.00 # pivot
-HandleAxisColor:            1.00 1.00 1.00 # axes
-HandleXAxisColor:           1.00 0.00 0.00 # x axis
-HandleYAxisColor:           0.00 1.00 0.00 # y axis
-HandleZAxisColor:           0.00 0.00 1.00 # z axis
-HandlePlaneAxisColor:       0.60 0.03 0.60 # plane axis
-HandleViewAxisRotateColor:  0.60 0.03 0.60 # outer rotate ring
-HandleTumbleSphereColor:    0.50 0.50 0.50 # tumble sphere
-HandleBendColor:            0.10 0.90 0.10 # bend
-HandleTwistColor:           1.00 1.00 0.20 # twist
-HandleTracerColor:          0.40 0.40 0.40 # drag tracers
-HandleDeltaTextColor:       1.00 0.17 0.00 # text - delta val
-HandleDeltaTextShadowColor: 0.00 0.00 0.00 # text - delta val shadow
-HandleDeltaTextAlpha:       ALPHA 1.00     # text - delta val alpha
-HandleLocateColor:          0.70 0.70 0.50 # hover glow
-HandleLocateAlpha:          ALPHA 0.60     # hover glow alpha
-HandleLocatePassiveColor:   0.30 0.30 0.65 # hover passive glow
-HandleAxisLocateAlpha:      ALPHA 0.50     # hover axis glow
-HandleTumbleSphereAlpha:    ALPHA 0.25     # hover tumble sphere alpha
-HandleColor:                1.00 0.17 0.00 # direct manipulation handle
-InactiveHandleColor:        0.40 0.40 0.40 # dimmed/inactive handle
-PickedHandleColor:          1.00 0.51 0.80 # picked handle widget for direct manipulation
-SelectedHandleColor:        1.00 1.00 0.00 # selected handle
-HandleTracerFillAlpha:      ALPHA 0.70     # filled handle tracer alpha
+HandlePivotColor:              0.40 0.40 1.00 # pivot
+HandleAxisColor:               1.00 1.00 1.00 # axes
+HandleXAxisColor:              1.00 0.00 0.00 # x axis
+HandleYAxisColor:              0.00 1.00 0.00 # y axis
+HandleZAxisColor:              0.00 0.00 1.00 # z axis
+HandlePlaneAxisColor:          0.60 0.03 0.60 # plane axis
+HandleViewAxisRotateColor:     0.60 0.03 0.60 # outer rotate ring
+HandleTumbleSphereColor:       0.50 0.50 0.50 # tumble sphere
+HandleBendColor:               0.10 0.90 0.10 # bend
+HandleTwistColor:              1.00 1.00 0.20 # twist
+HandleTracerColor:             0.40 0.40 0.40 # drag tracers
+HandleDeltaTextColor:          1.00 0.17 0.00 # text - delta val
+HandleDeltaTextShadowColor:    0.00 0.00 0.00 # text - delta val shadow
+HandleDeltaTextAlpha:          ALPHA 1.00     # text - delta val alpha
+HandleLocateColor:             0.70 0.70 0.50 # hover glow
+HandleLocateAlpha:             ALPHA 0.60     # hover glow alpha
+HandleLocatePassiveColor:      0.30 0.30 0.65 # hover passive glow
+HandleAxisLocateAlpha:         ALPHA 0.50     # hover axis glow
+HandleTumbleSphereAlpha:       ALPHA 0.25     # hover tumble sphere alpha
+HandleColor:                   1.00 0.17 0.00 # direct manipulation handle
+InactiveHandleColor:           0.40 0.40 0.40 # dimmed/inactive handle
+PickedHandleColor:             1.00 0.51 0.80 # picked handle widget for direct manipulation
+SelectedHandleColor:           1.00 1.00 0.00 # selected handle
+HandleTracerFillAlpha:         ALPHA 0.70     # filled handle tracer alpha
 
 # Text
-MessageColor:         0.80 0.80 0.80 # normal
-PromptColor:          0.80 0.80 1.00 # tool prompt
-WarningColor:         0.90 0.65 0.00 # warning
-ErrorColor:           1.00 0.20 0.20 # error
-SuccessColor:         0.35 0.65 0.35 # success
-FlashMessageColor:    1.00 1.00 1.00 # flash
-TextColor:            0.60 0.60 0.60 # viewport text
-TextShadowColor:      0.00 0.00 0.00 # viewport text dropshadow
-LabelColor:           0.30 0.30 0.30 # viewer overlay labels
-SelectedLabelColor:   0.60 0.60 0.60 # viewport - selected labels
-OverlayLabelColor:    1.00 0.00 1.00 # label - viewer overlay
-AuxOverlayLabelColor: 0.80 0.80 0.00 # label - viewer overlay auxiliary
+MessageColor:                  0.80 0.80 0.80 # normal
+PromptColor:                   0.80 0.80 1.00 # tool prompt
+WarningColor:                  0.90 0.65 0.00 # warning
+ErrorColor:                    1.00 0.20 0.20 # error
+SuccessColor:                  0.35 0.65 0.35 # success
+FlashMessageColor:             1.00 1.00 1.00 # flash
+TextColor:                     0.60 0.60 0.60 # viewport text
+TextShadowColor:               0.00 0.00 0.00 # viewport text dropshadow
+LabelColor:                    0.30 0.30 0.30 # viewer overlay labels
+SelectedLabelColor:            0.60 0.60 0.60 # viewport - selected labels
+OverlayLabelColor:             1.00 0.00 1.00 # label - viewer overlay
+AuxOverlayLabelColor:          0.80 0.80 0.00 # label - viewer overlay auxiliary
 
 # Misc
-GeoWarningColor:      1.00 0.70 0.20 # warning
-LocateColor:          0.80 0.50 0.00 # hover - overlay
-LocateAlpha:          ALPHA 0.20     # hover - overlay alpha
-LocateNearColor:      0.10 0.90 0.10 # hover - nearby
-LocateNearAlpha:      ALPHA 0.30     # hover - nearby alpha
-IKCriticalZoneColor:  0.98 0.35 0.20 # inverse kinematic danger zone cone
-SelectBoxOutline:     0.60 0.60 0.60 # selection box - outer outline
-SelectBoxInnerLine:   0.30 0.30 0.30 # selection box - inner outline
-SelectBoxFill:        0.20 0.20 0.20 # selection box - shaded fill
-SelectBoxAlpha:       ALPHA 0.25     # selection box - fill alpha
-ProfileWireColor:     0.60 0.55 0.50 # profiles
-AxesColor:            1.00 0.00 0.00 # coordinate/cplane axes
-SelectedAxesColor:    1.00 0.00 0.00 # selected coordinate axes
-HeightVectorColor:    1.00 0.50 0.50 # height motion indicator
-PeanutColor:          1.00 0.45 0.07 # peanut color for orientation picking
-SliderKnobMaxColor:   1.00 1.00 0.00 # slider handle max value warning
-ViewPivotFGColor:     1.00 0.20 0.20 # view pivot - indicators
-ViewPivotBGColor:     1.00 0.20 0.20 # view pivot - bg (ignored if same as fg)
+GeoWarningColor:               1.00 0.70 0.20 # warning
+LocateColor:                   0.80 0.50 0.00 # hover - overlay
+LocateAlpha:                   ALPHA 0.20     # hover - overlay alpha
+LocateNearColor:               0.10 0.90 0.10 # hover - nearby
+LocateNearAlpha:               ALPHA 0.30     # hover - nearby alpha
+IKCriticalZoneColor:           0.98 0.35 0.20 # inverse kinematic danger zone cone
+SelectBoxOutline:              0.60 0.60 0.60 # selection box - outer outline
+SelectBoxInnerLine:            0.30 0.30 0.30 # selection box - inner outline
+SelectBoxFill:                 0.20 0.20 0.20 # selection box - shaded fill
+SelectBoxAlpha:                ALPHA 0.25     # selection box - fill alpha
+ProfileWireColor:              0.60 0.55 0.50 # profiles
+AxesColor:                     1.00 0.00 0.00 # coordinate/cplane axes
+SelectedAxesColor:             1.00 0.00 0.00 # selected coordinate axes
+HeightVectorColor:             1.00 0.50 0.50 # height motion indicator
+PeanutColor:                   1.00 0.45 0.07 # peanut color for orientation picking
+SliderKnobMaxColor:            1.00 1.00 0.00 # slider handle max value warning
+ViewPivotFGColor:              1.00 0.20 0.20 # view pivot - indicators
+ViewPivotBGColor:              1.00 0.20 0.20 # view pivot - bg (ignored if same as fg)
 
 # Pill
-PillBGColor:              0.15 0.15 0.15       # bg
-PillBGAlpha:              ALPHA 1.00           # bg alpha
-PillOutlineColor:         @PillBGColor         # outline
-PillTextColor:            0.75 0.75 0.75       # text
-PillCamLockBGColor:       0.30 0.10 0.10       # locked cam bg
-PillCamLockOutlineColor:  @PillCamLockBGColor  # locked cam outline
-PillCamLockTextColor:     0.85 0.85 0.85       # locked cam text
-SelectedPillBGColor:      0.25 0.25 0.25       # selected viewport bg
-SelectedPillBGAlpha:      ALPHA 1.00           # selected viewport bg alpha
-SelectedPillOutlineColor: @SelectedPillBGColor # selected viewport outline
-SelectedPillTextColor:    0.70 0.80 0.80       # selected viewport text
+PillBGColor:                   0.15 0.15 0.15       # bg
+PillBGAlpha:                   ALPHA 1.00           # bg alpha
+PillOutlineColor:              @PillBGColor         # outline
+PillTextColor:                 0.75 0.75 0.75       # text
+PillCamLockBGColor:            0.30 0.10 0.10       # locked cam bg
+PillCamLockOutlineColor:       @PillCamLockBGColor  # locked cam outline
+PillCamLockTextColor:          0.85 0.85 0.85       # locked cam text
+SelectedPillBGColor:           0.25 0.25 0.25       # selected viewport bg
+SelectedPillBGAlpha:           ALPHA 1.00           # selected viewport bg alpha
+SelectedPillOutlineColor:      @SelectedPillBGColor # selected viewport outline
+SelectedPillTextColor:         0.70 0.80 0.80       # selected viewport text
 
 # Regions/overlays
 
@@ -209,17 +208,17 @@ ViewMaskOverlayColor:          0.40 0.40 0.40   # viewer mask overlay
 
 # UV
 
-UVGridColor:                 0.30 0.30 0.30 # viewport grid lines
-UVGridOriginColor:           0.35 0.35 0.35 # viewport origin lines
-UVGridBoundaryColor:         0.35 0.35 0.35 # viewport boundary lines
-UVBackFaceFillColor:         0.90 0.35 0.90 # backfaces
-UVOverlapFillColor:          1.00 0.00 0.00 # overlapping UV area
-UVOverlapFillAlpha:          ALPHA 0.70     # overlapping UV area alpha
-UVFillAlpha:                 ALPHA 0.40     # front face alpha
-SelectedUVBackFaceFillColor: 0.90 0.50 0.90 # the selected version
-FlattenPinColor:             1.00 0.00 0.00 # flatten state pin color
-FlattenSelectedPinColor:     1.00 1.00 0.00 # flatten state selected pin color
-FlattenInitialPinColor:      0.70 0.00 0.00 # flatten state initial pin color
+UVGridColor:                   0.30 0.30 0.30 # viewport grid lines
+UVGridOriginColor:             0.35 0.35 0.35 # viewport origin lines
+UVGridBoundaryColor:           0.35 0.35 0.35 # viewport boundary lines
+UVBackFaceFillColor:           0.90 0.35 0.90 # backfaces
+UVOverlapFillColor:            1.00 0.00 0.00 # overlapping UV area
+UVOverlapFillAlpha:            ALPHA 0.70     # overlapping UV area alpha
+UVFillAlpha:                   ALPHA 0.40     # front face alpha
+SelectedUVBackFaceFillColor:   0.90 0.50 0.90 # the selected version
+FlattenPinColor:               1.00 0.00 0.00 # flatten state pin color
+FlattenSelectedPinColor:       1.00 1.00 0.00 # flatten state selected pin color
+FlattenInitialPinColor:        0.70 0.00 0.00 # flatten state initial pin color
 
 
 # *approx: uses sample-based opacity. Will be rounded to 1/AA_level, where
diff --git a/config/NodeGraphDark.inc b/config/NodeGraphDark.inc
index 7140942..afed43e 100644
--- a/config/NodeGraphDark.inc
+++ b/config/NodeGraphDark.inc
@@ -5,326 +5,326 @@
 // Background
 //
 
-GraphBackground:         #202020

-GraphOverviewBackground: GREY(0.10)

-GraphOverviewViewRegion: 0.5 0.3 0.5

-GraphOverviewBorder:     BLACK

-GraphPromptText:         GREY(0.8)

-GraphGridLines:          GREY(0.95)

-GraphGridPoints:         #606060

-

-//

-// Badges

-//

-

-GraphErrorBadgeDot:            1.0 0.0 0.0

-GraphChildErrorBadgeDot:       1.0 0.0 0.0

-GraphWarningBadgeDot:          0.77 0.6 0.04

-GraphMessageBadgeDot:          0.05 0.45 1.0

-GraphCommentBadgeDot:          0.15 0.67 0.64

-GraphNodeLockedBadgeDot:       1.0 0.35 0.43

-GraphNodeUnloadBadgeDot:       0.6 0.65 0.73

-GraphNodeHasDataBadgeDot:      0.45 0.75 0.45

-GraphNeedsCookBadgeDot:        0.97 0.91 0.11

-GraphHdaLockedBadgeDot:        0.43 0.47 0.48

-GraphHdaUnlockedBadgeDot:      0.98 0.49 0.55

-GraphHdaDelaySyncBadgeDot:     0.7 0.7 0.7

-GraphTimeDependentBadgeDot:    0.72 0.91 0.53

-GraphTagsBadgeDot:             0.15 0.67 0.64

-GraphVexCachedBadgeDot:        #FF5AD2

-GraphVexCachableBadgeDot:      #AA3E8C

-GraphNotCompilableBadgeDot:    #E5B985

-GraphConstraintsBadgeDot:      #97C473

-GraphKinematicsBadgeDot:       #FF9370

-GraphHasTakeDataBadgeDot:      #979797

-GraphNodeUnloadBadgeDot:       #D19F9F

-GraphNodeHasDataBadgeDot:      #9FABD1

-Graph64bitBadgeDot:            #AC68CC

-GraphPdgDynamicBadgeDot:       #E5C8FF

-GraphUnloadedPayloadsBadgeDot: #EDC486

-GraphPopulationMaskBadgeDot:   #A06B9A

-GraphDiveableBadgeDot:         #73d216

-GraphLoadFromDiskBadgeDot:     #dceefaff

-GraphPdgMQServerAuthBadgeDot:  #448519

-GraphPdgMQClientsAuthBadgeDot: #448519

+GraphBackground:                  bg_graph

+GraphOverviewBackground:          grey(0.10)

+GraphOverviewViewRegion:          0.5 0.3 0.5

+GraphOverviewBorder:              black

+GraphPromptText:                  grey(0.8)

+GraphGridLines:                   grey(0.95)

+GraphGridPoints:                  border

+

+//

+// Badge Dots

+//

+

+GraphErrorBadgeDot:               1.0 0.0 0.0

+GraphChildErrorBadgeDot:          1.0 0.0 0.0

+GraphWarningBadgeDot:             0.77 0.6 0.04

+GraphMessageBadgeDot:             0.05 0.45 1.0

+GraphCommentBadgeDot:             0.15 0.67 0.64

+GraphNodeLockedBadgeDot:          1.0 0.35 0.43

+GraphNodeUnloadBadgeDot:          0.6 0.65 0.73

+GraphNodeHasDataBadgeDot:         0.45 0.75 0.45

+GraphNeedsCookBadgeDot:           0.97 0.91 0.11

+GraphHdaLockedBadgeDot:           0.43 0.47 0.48

+GraphHdaUnlockedBadgeDot:         0.98 0.49 0.55

+GraphHdaDelaySyncBadgeDot:        0.7 0.7 0.7

+GraphTimeDependentBadgeDot:       0.72 0.91 0.53

+GraphTagsBadgeDot:                0.15 0.67 0.64

+GraphVexCachedBadgeDot:           #FF5AD2

+GraphVexCachableBadgeDot:         #AA3E8C

+GraphNotCompilableBadgeDot:       #E5B985

+GraphConstraintsBadgeDot:         #97C473

+GraphKinematicsBadgeDot:          #FF9370

+GraphHasTakeDataBadgeDot:         #979797

+GraphNodeUnloadBadgeDot:          #D19F9F

+GraphNodeHasDataBadgeDot:         #9FABD1

+Graph64bitBadgeDot:               #AC68CC

+GraphPdgDynamicBadgeDot:          #E5C8FF

+GraphUnloadedPayloadsBadgeDot:    #EDC486

+GraphPopulationMaskBadgeDot:      #A06B9A

+GraphDiveableBadgeDot:            #73d216

+GraphLoadFromDiskBadgeDot:        #dceefaff

+GraphPdgMQServerAuthBadgeDot:     #448519

+GraphPdgMQClientsAuthBadgeDot:    #448519

 
 //
 // Context: COP2
 //
 
-GraphCop2PreviewBackground:   GREY(0.1)

-GraphCop2BottomButtonEnabled: GREY(0.1)

-GraphCop2MaskInput:           0.50 0.80 0.50

+GraphCop2PreviewBackground:       grey(0.1)

+GraphCop2BottomButtonEnabled:     grey(0.1)

+GraphCop2MaskInput:               0.50 0.80 0.50

 
 //
 // Context: DOP
 //
 
-GraphDopObjectData: 0.65 0.65 0.65

-GraphDopData:       0.50 0.80 0.50

-GraphDopRelData:    0.20 0.60 0.20

-GraphDopSolverData: 0.7 0.5 0.9

-GraphDopAnyData:    0.9 0.9 0.9

+GraphDopObjectData:               0.65 0.65 0.65

+GraphDopData:                     0.50 0.80 0.50

+GraphDopRelData:                  0.20 0.60 0.20

+GraphDopSolverData:               0.7 0.5 0.9

+GraphDopAnyData:                  0.9 0.9 0.9

 
 //
 // Context: LOP
 //
 
-GraphLopLayerOutline: GREY(0.6)

-GraphLopLayerColor1:  0.3 0.7 0.2

-GraphLopLayerColor2:  0.6 0.4 0.2

-GraphLopLayerColor3:  0.9 0.1 0.2

-GraphLopLayerColor4:  0.3 0.2 0.3

-GraphLopLayerColor5:  0.6 0.2 0.6

-GraphLopLayerColor6:  0.9 0.2 0.9

-GraphLopLayerColor7:  0.2 0.7 0.3

-GraphLopLayerColor8:  0.2 0.4 0.6

-GraphLopLayerColor9:  0.2 0.1 0.9

+GraphLopLayerOutline:             grey(0.6)

+GraphLopLayerColor1:              0.3 0.7 0.2

+GraphLopLayerColor2:              0.6 0.4 0.2

+GraphLopLayerColor3:              0.9 0.1 0.2

+GraphLopLayerColor4:              0.3 0.2 0.3

+GraphLopLayerColor5:              0.6 0.2 0.6

+GraphLopLayerColor6:              0.9 0.2 0.9

+GraphLopLayerColor7:              0.2 0.7 0.3

+GraphLopLayerColor8:              0.2 0.4 0.6

+GraphLopLayerColor9:              0.2 0.1 0.9

 
 //
 // Context: SHOP
 //
 
-GraphShopConnectorBackground: GREY(0.1)

+GraphShopConnectorBackground:     grey(0.1)

 
 //
 // Context: SOP
 //
 
-GraphSopHeightfield:     #25aa8e

-GraphSopConstraints:     #D879D8

-GraphSopDomain:          #6bcae2

-GraphSopRestGeometry:    0.584 0.776 1.0

-GraphSopCapturePose:     0.6 0.6 0.6

-GraphSopAnimatedPose:    1.0 0.725 0.0

-GraphSopCharacterStream: 0.559 0.159 1.0

+GraphSopHeightfield:              #25aa8e

+GraphSopConstraints:              #D879D8

+GraphSopDomain:                   #6bcae2

+GraphSopRestGeometry:             0.584 0.776 1.0

+GraphSopCapturePose:              0.6 0.6 0.6

+GraphSopAnimatedPose:             1.0 0.725 0.0

+GraphSopCharacterStream:          0.559 0.159 1.0

 
 //
 // Context: TOP
 //
 
-GraphPdgProgressOutline:    WHITE

-GraphPdgProgressPrecook:    #324D59

-GraphPdgProgressCooking:    #B8E986

-GraphPdgProgressCooked:     #4D623F

-GraphPdgProgressWarning:    #EBF802

-GraphPdgProgressError:      #FF3300

-GraphPdgProgressIncomplete: #75876A

+GraphPdgProgressOutline:          white

+GraphPdgProgressPrecook:          #324D59

+GraphPdgProgressCooking:          #B8E986

+GraphPdgProgressCooked:           #4D623F

+GraphPdgProgressWarning:          #EBF802

+GraphPdgProgressError:            #FF3300

+GraphPdgProgressIncomplete:       #75876A

 
-GraphPdgProgressErrorCircle: #D0021B

-GraphPdgProgressErrorFill:   #730000

-GraphPdgProgressNormalFill:  #232323

+GraphPdgProgressErrorCircle:      #D0021B

+GraphPdgProgressErrorFill:        #730000

+GraphPdgProgressNormalFill:       #232323

 
-GraphPdgSummaryBackground:        GREY(0.18)

+GraphPdgSummaryBackground:        grey(0.18)

 GraphPdgSummaryFilterOn:          #FFD42A
 GraphPdgSummaryWorkItemCooked:    #73945D
 GraphPdgSummaryWorkItemCooking:   #B8E986
 GraphPdgSummaryWorkItemWaiting:   #879889
-GraphPdgSummaryWorkItemUncooked:  GREY(0.5)

+GraphPdgSummaryWorkItemUncooked:  grey(0.5)

 GraphPdgSummaryWorkItemFailed:    #EE5A6C
 GraphPdgSummaryWorkItemCancelled: #EBB502
 
-GraphTaskGraphBackground:         GREY(0.1)

-GraphTaskGraphBorder:             GREY(0.7)

-GraphTaskGraphSeeMore:            GREY(0.9)

+GraphTaskGraphBackground:         grey(0.1)

+GraphTaskGraphBorder:             grey(0.7)

+GraphTaskGraphSeeMore:            grey(0.9)

 GraphTaskGraphWorkItemCooked:     #529232
 GraphTaskGraphWorkItemCached:     #529232
 GraphTaskGraphWorkItemCooking:    #ADFF49
 GraphTaskGraphWorkItemWaiting:    #354B60
-GraphTaskGraphWorkItemUncooked:   GREY(0.5)

+GraphTaskGraphWorkItemUncooked:   grey(0.5)

 GraphTaskGraphWorkItemFailed:     #FF3300
 GraphTaskGraphWorkItemCancelled:  #69511B
 GraphTaskGraphWorkItemSelected:   #FFD42A
 GraphTaskGraphWorkItemHovered:    #33EEFF
 GraphTaskGraphWorkItemAncestor:   #99FF79
 GraphTaskGraphWorkItemDescendant: #2AFFCB
-GraphTaskGraphNormalWire:         GREY(0.9)

+GraphTaskGraphNormalWire:         grey(0.9)

 GraphTaskGraphMappedWire:         #80FFA2
 GraphTaskGraphIndirectWire:       #D9DD70
 
-GraphTaskGraphWorkItemPerfFast: #009166

-GraphTaskGraphWorkItemPerfMed:  #f6ff00

-GraphTaskGraphWorkItemPerfSlow: #ff9000

-GraphTaskGraphWorkItemPerfNA:   GREY(0.35)

+GraphTaskGraphWorkItemPerfFast:   #009166

+GraphTaskGraphWorkItemPerfMed:    #f6ff00

+GraphTaskGraphWorkItemPerfSlow:   #ff9000

+GraphTaskGraphWorkItemPerfNA:     grey(0.35)

 
 GraphTaskGraphStatusBarFailed:    #FF9C9C
 GraphTaskGraphStatusBarCancelled: #F7DF1B
 GraphTaskGraphStatusBarCooked:    #529232
 GraphTaskGraphStatusBarCooking:   #B7DF86
-GraphTaskGraphStatusBarWaiting:   GREY(0.6)

-GraphTaskGraphStatusBarEmpty:     GREY(0.2)

+GraphTaskGraphStatusBarWaiting:   grey(0.6)

+GraphTaskGraphStatusBarEmpty:     grey(0.2)

 
-GraphTaskGraphLogError:   #D04548

-GraphTaskGraphLogWarning: #B8B834

+GraphTaskGraphLogError:           #D04548

+GraphTaskGraphLogWarning:         #B8B834

 
-GraphTaskPageRect: #D8D8D8

+GraphTaskPageRect:                #D8D8D8

 
-GraphTopBottomButtonEnabled:  GREY(0.1)

-GraphTopBottomButtonDisabled: GREY(0.6)

+GraphTopBottomButtonEnabled:      grey(0.1)

+GraphTopBottomButtonDisabled:     grey(0.6)

 
 //
 // Context: VOP
 //
 
-GraphVopConnectorGroupName:   WHITE

-GraphVopConnectorBackground:  GREY(0.25)

-GraphVopBottomButtonEnabled:  GREY(0.1)

-GraphVopBottomButtonDisabled: GREY(0.6)

+GraphVopConnectorGroupName:       white

+GraphVopConnectorBackground:      grey(0.25)

+GraphVopBottomButtonEnabled:      grey(0.1)

+GraphVopBottomButtonDisabled:     grey(0.6)

 
 //
 // Flags
 //
 
-GraphTemplateFlag:           #DD7DD7

-GraphSelectableTemplateFlag: #B151BB

-GraphBypassFlag:             #E7CD2F

-GraphRenderFlag:             #A779FF

-GraphDisplayFlag:            MY_BLUE // OBJ display flag

-GraphOutputFlag:             0.75 0.4 0.0

-GraphSelectableFlag:         #669966 // OBJ selectable flag

-GraphExportFlag:             #FFA600

-GraphHiddenFlag:             #90BECD

-GraphAudioFlag:              0.0 0.5 0.5

-GraphThumbnailFlag:          0.35 0.6 0.2

-GraphLockFlag:               #FF3300

-GraphSoftLockFlag:           #C4E361

-GraphDebugFlag:              #6CC6B2

-GraphMaterialFlag:           0.75 0.4 0.0

-GraphDisplayAndRenderFlag:   MY_BLUE // SOP display flag

-GraphDisplayAndOutputFlag:   0.75 0.45 0.36

-GraphFilterFlag:             #55FFC1

+GraphTemplateFlag:                #DD7DD7

+GraphSelectableTemplateFlag:      #B151BB

+GraphBypassFlag:                  #E7CD2F

+GraphRenderFlag:                  #A779FF

+GraphDisplayFlag:                 border // OBJ display flag

+GraphOutputFlag:                  0.75 0.4 0.0

+GraphSelectableFlag:              border // OBJ selectable flag

+GraphExportFlag:                  #FFA600

+GraphHiddenFlag:                  #90BECD

+GraphAudioFlag:                   0.0 0.5 0.5

+GraphThumbnailFlag:               0.35 0.6 0.2

+GraphLockFlag:                    #FF3300

+GraphSoftLockFlag:                #C4E361

+GraphDebugFlag:                   #6CC6B2

+GraphMaterialFlag:                0.75 0.4 0.0

+GraphDisplayAndRenderFlag:        border // SOP display flag

+GraphDisplayAndOutputFlag:        0.75 0.45 0.36

+GraphFilterFlag:                  #55FFC1

 
 //
 // Flyout (??)
 //
 
-GraphFlyoutBackgroundFlagOn:  BLACK

-GraphFlyoutBackgroundFlagOff: BLACK

-GraphFlyoutEdgeFlagOff:       GREY(0.3)

-GraphFlyoutInfo:              GREY(0.1)

-GraphFlyoutWarning:           0.2 0.2 0.0

-GraphFlyoutError:             0.2 0.0 0.0

+GraphFlyoutBackgroundFlagOn:      black

+GraphFlyoutBackgroundFlagOff:     black

+GraphFlyoutEdgeFlagOff:           grey(0.3)

+GraphFlyoutInfo:                  grey(0.1)

+GraphFlyoutWarning:               0.2 0.2 0.0

+GraphFlyoutError:                 0.2 0.0 0.0

 
 //
 // Objects
 //
 
-GraphItemBorder:     BLACK

-GraphMinimizeButton: GREY(0.8)

+GraphItemBorder:                  black

+GraphMinimizeButton:              grey(0.8)

 
 //
 // Objects: Highlights
 //
 
-GraphDisplayHighlight:  #44679A

-GraphExportHighlight:   #734670

-GraphRenderHighlight:   #9273CB

-GraphOutputHighlight:   #6B5634

-GraphTemplateHighlight: #734670

-GraphFilterHighlight:   #298966

+GraphDisplayHighlight:            #44679A

+GraphExportHighlight:             #734670

+GraphRenderHighlight:             #9273CB

+GraphOutputHighlight:             #6B5634

+GraphTemplateHighlight:           #734670

+GraphFilterHighlight:             #298966

 
 //
 // Objects: Images
 //
 
-BackgroundImageLocate:     WHITE

-BackgroundImageBorder:     YELLOW

-BackgroundImageBrightness: YELLOW

-BackgroundImageLink:       GREY(0.8)

+BackgroundImageLocate:            white

+BackgroundImageBorder:            yellow

+BackgroundImageBrightness:        yellow

+BackgroundImageLink:              grey(0.8)

 
 //
 // Objects: Dot
 //
 
-GraphDotPinAccent: GREY(0.3)

+GraphDotPinAccent:                grey(0.3)

 
 //
 // Objects: Selection
 //
 
-GraphPickFill:               0.9 0.9 0.9

-GraphPreSelection:           0.75 0.86 1.0

-GraphItemCurrent:            MY_BLUE

-GraphItemCurrentNonSelected: #C89C9C

-GraphItemSelection:          #EEF81C

-GraphItemSelectionContrast:  BLACK

-GraphItemContentsSelection:  #6E780C

-GraphSnapLine:               #5C704D

+GraphPickFill:                    0.9 0.9 0.9

+GraphPreSelection:                0.75 0.86 1.0

+GraphItemCurrent:                 selection

+GraphItemCurrentNonSelected:      #aaaaaa

+GraphItemSelection:               #aaaaaa

+GraphItemSelectionContrast:       black

+GraphItemContentsSelection:       #6E780C

+GraphSnapLine:                    #5C704D

 
 //
 // Objects: Subnet
 //
 
-GraphSubnetShadow1:      BLACK

-GraphSubnetShadowBlend1: 0.6

-GraphSubnetShadow2:      WHITE

-GraphSubnetShadowBlend2: 0.3

+GraphSubnetShadow1:               black

+GraphSubnetShadowBlend1:          0.6

+GraphSubnetShadow2:               white

+GraphSubnetShadowBlend2:          0.3

 
 //
 // Overlays
 //
 
-GraphOverlayLeftText:   0.0 0.9 0.9

-GraphOverlayCenterText: BG_LO

-GraphOverlayRightText:  GREY(0.8)

+GraphOverlayLeftText:             0.0 0.9 0.9

+GraphOverlayCenterText:           bg_low

+GraphOverlayRightText:            grey(0.8)

 
 //
 // Palettes
 //
 
-PaletteBackground: GREY(0.15)

-PaletteSelected:   YELLOW

-ShapePaletteShape: GREY(0.8)

+PaletteBackground:                grey(0.15)

+PaletteSelected:                  yellow

+ShapePaletteShape:                grey(0.8)

 
 //
 // Text
 //
 
-GraphNameText:                #e0e0e0

-GraphNodeTypeText:            GREY(0.4)

-GraphCommentText:             #6DB4BD

-GraphDescriptiveNameText:     #76A8E1

-GraphContextOptionDepsText:   #6DB4BD

-GraphLopLastModifiedPrimText: #6DB4BD

-GraphLopLayerCountText:       #6DB4BD

-GraphOutputForViewText:       #6DB4BD

-GraphDetailIdText:            #6DB4BD

-GraphNetworkBoxText:          WHITE

-GraphNetworkBoxTextDark:      BLACK

-GraphNetworkBoxNameText:      #76A8E1

-GraphIndirectText:            WHITE

-GraphIndirectTextDark:        BLACK

-GraphTagsText:                #6DB4BD

+GraphNameText:                    #e0e0e0

+GraphNodeTypeText:                grey(0.4)

+GraphCommentText:                 #6DB4BD

+GraphDescriptiveNameText:         #76A8E1

+GraphContextOptionDepsText:       #6DB4BD

+GraphLopLastModifiedPrimText:     #6DB4BD

+GraphLopLayerCountText:           #6DB4BD

+GraphOutputForViewText:           #6DB4BD

+GraphDetailIdText:                #6DB4BD

+GraphNetworkBoxText:              white

+GraphNetworkBoxTextDark:          black

+GraphNetworkBoxNameText:          #76A8E1

+GraphIndirectText:                white

+GraphIndirectTextDark:            black

+GraphTagsText:                    #6DB4BD

 
 //
 // Wires
 //
 
-GraphConnector: i       0.7 0.7 0.7

-GraphConnectorLabel:    GREY(0.70)

-GraphConnectorError:    #CE5E5E

-GraphWire:              #5F91CC

-GraphWireUnused:        0.4 0.4 0.4

-GraphWireError:         RED

-GraphWireLoopBack:      0.3 0.3 1.0

-GraphWireSelection:     YELLOW

-GraphWireNodeSelection: MY_BLUE

-GraphWireLongFaded:     0.5 0.5 0.5

-GraphWireLongerFaded:   0.5 0.5 0.5

-GraphWireStub:          GREY(0.70)

-GraphWireStubSelection: YELLOW

-GraphWireCut:           RED

-GraphWireCutPath:       0.95 0.3 0.0

-GraphWireStitchStart:   #B8E986

-GraphWireStitchEnd:     #B8E986

-GraphSpareWire:         #8967D9

-GraphParmOverrideWire:  #FFA500

+GraphConnector:                   border

+GraphConnectorLabel:              grey(0.70)

+GraphConnectorError:              #CE5E5E

+GraphWire:                        border

+GraphWireUnused:                  0.4 0.4 0.4

+GraphWireError:                   red

+GraphWireLoopBack:                0.3 0.3 1.0

+GraphWireSelection:               yellow

+GraphWireNodeSelection:           hc_blue

+GraphWireLongFaded:               0.5 0.5 0.5

+GraphWireLongerFaded:             0.5 0.5 0.5

+GraphWireStub:                    grey(0.70)

+GraphWireStubSelection:           yellow

+GraphWireCut:                     red

+GraphWireCutPath:                 0.95 0.3 0.0

+GraphWireStitchStart:             #B8E986

+GraphWireStitchEnd:               #B8E986

+GraphSpareWire:                   #8967D9

+GraphParmOverrideWire:            #FFA500

 
 //
 // Wire: dependencies
 //
 
-GraphDependency:            #9A6955

-GraphDependencyEndAffector: #668E4A

-GraphDependencyExternalIn:  GREY(0.8)

-GraphDependencyExternalOut: GREY(0.8)

+GraphDependency:                  #9A6955

+GraphDependencyEndAffector:       #668E4A

+GraphDependencyExternalIn:        grey(0.8)

+GraphDependencyExternalOut:       grey(0.8)

diff --git a/config/NodeShapes/squared.json b/config/NodeShapes/squared.json
index cd5c768..f4bd513 100644
--- a/config/NodeShapes/squared.json
+++ b/config/NodeShapes/squared.json
@@ -4,7 +4,7 @@
     "0": {
       "outline": [
         [
-          0.12,
+          0.17,
           0
         ],
         [
@@ -16,7 +16,7 @@
           0.3
         ],
         [
-          0.12,
+          0.17,
           0.3
         ]
       ]
@@ -24,19 +24,19 @@
     "1": {
       "outline": [
         [
-          0.24,
+          0.32,
           0
         ],
         [
-          0.12,
+          0.17,
           0
         ],
         [
-          0.12,
+          0.17,
           0.3
         ],
         [
-          0.24,
+          0.32,
           0.3
         ]
       ]
@@ -44,19 +44,19 @@
     "2": {
       "outline": [
         [
-          0.88,
+          0.49,
           0
         ],
         [
-          0.76,
+          0.32,
           0
         ],
         [
-          0.76,
+          0.32,
           0.3
         ],
         [
-          0.88,
+          0.49,
           0.3
         ]
       ]
@@ -64,19 +64,19 @@
     "3": {
       "outline": [
         [
-          1,
+          0.66,
           0
         ],
         [
-          0.88,
+          0.49,
           0
         ],
         [
-          0.88,
+          0.49,
           0.3
         ],
         [
-          1,
+          0.66,
           0.3
         ]
       ]
@@ -146,12 +146,12 @@
   ],
   "icon": [
     [
-      0.38,
-      0.03
+      0.7,
+      0.02
     ],
     [
-      0.62,
-      0.27
+      0.94,
+      0.26
     ]
   ]
 }
diff --git a/config/UIDark.hcs b/config/UIDark.hcs
index 46033ff..1c57704 100644
--- a/config/UIDark.hcs
+++ b/config/UIDark.hcs
@@ -17,79 +17,79 @@ Scheme: hc-dark
 // Base colors
 //
 
-BackColor:                   BG_HI          // auto contrast code linked to BorderDark
-BorderLight:                 BG_HI          // line left of node graph pane & some menus
-BorderDark:                  BG_LO          // annoying status bar border
-TextColor:                   TEXT
-HiliteTextColor:             TEXT_HIGHLIGHT
-HiliteTextBG:                #454B50
-SecondaryText:               GREY(0.5)
-LinkText:                    #64ACFF
-DropIndicator                0.0 0.0 1.0
-ForegroundColor:             GREY(0.02)     // line in parameter pane (auto contrast code)
-BackgroundColor:             UNK            // ?
-PaperColor:                  BG_LO          // line below pane tabs, other lines
-TextHighlightColor:          TEXT_HIGHLIGHT // ?
-BlueTextLinkColor:           #FF00FF
-LinkerPartialLinkColor:      GREY(0.8)      // Linker tree views (?)
-MenuBarColor:                GREY(0.75)
-MenuColor:                   GREY(0.70)
-BlueSelectedMenuColor:       0.125 0.125 1
-DisabledTextColor:           arrow
-DisabledTextDropShadowColor: GREY(0.8)
+BackColor:                            bg_high        // auto contrast code linked to BorderDark
+BorderLight:                          bg_high        // line left of node graph pane & some menus
+BorderDark:                           bg_low          // annoying status bar border
+TextColor:                            text
+HiliteTextColor:                      text_highlight
+HiliteTextBG:                         #454B50
+SecondaryText:                        grey(0.5)
+LinkText:                             #64ACFF
+DropIndicator                         0.0 0.0 1.0
+ForegroundColor:                      grey(0.02)     // line in parameter pane (auto contrast code)
+BackgroundColor:                      unknown            // ?
+PaperColor:                           bg_low          // line below pane tabs, other lines
+TextHighlightColor:                   text_highlight // ?
+BlueTextLinkColor:                    #FF00FF
+LinkerPartialLinkColor:               grey(0.8)      // Linker tree views (?)
+MenuBarColor:                         grey(0.75)
+MenuColor:                            grey(0.70)
+BlueSelectedMenuColor:                0.125 0.125 1
+DisabledTextColor:                    arrow
+DisabledTextDropShadowColor:          grey(0.8)
 
 //
 // Channel editor
 //
 
-ChannelEditorBackground:            0.00 0.00 0.00    // graph bg
-ChannelEditorBGOutsideGlobal:       GREY(0.1)         // graph bg outside global time range
-ChannelEditorBGOutsidePlayback:     0.093 0.086 0.051 // graph bg outside playback range
-ChannelEditorTimebar:               1.00 1.00 1.00    // timebar to be xored on top
-ChannelEditorGridLine:              0.20 0.20 0.20    // graph grid line
-ChannelEditorGridDashedLine:        0.20 0.20 0.20    // graph grid dashed line
-ChannelEditorHandleDefault:         0.50 0.50 0.50    // handles
-ChannelEditorHandleSelected:        1.00 1.00 0.00    // selected handle
-ChannelEditorHandleLocated:         0.80 0.80 0.80    // handle on cursor hover
-ChannelEditorHandleSelectedLocated: 1.00 1.00 0.80    // selected handle on cursor hover
-ChannelEditorStatsText:             1.00 1.00 1.00    // color of the stats text
-ChannelEditorTimeText:              EDIT_BG           // color of the bottom time text
-ChannelEditorViewLock:              GREY(0.5)
-ChannelListCircleOutline:           black
+ChannelEditorBackground:              0.00 0.00 0.00    // graph bg
+ChannelEditorBGOutsideGlobal:         grey(0.1)         // graph bg outside global time range
+ChannelEditorBGOutsidePlayback:       0.093 0.086 0.051 // graph bg outside playback range
+ChannelEditorTimebar:                 1.00 1.00 1.00    // timebar to be xored on top
+ChannelEditorGridLine:                0.20 0.20 0.20    // graph grid line
+ChannelEditorGridDashedLine:          0.20 0.20 0.20    // graph grid dashed line
+ChannelEditorHandleDefault:           0.50 0.50 0.50    // handles
+ChannelEditorHandleSelected:          1.00 1.00 0.00    // selected handle
+ChannelEditorHandleLocated:           0.80 0.80 0.80    // handle on cursor hover
+ChannelEditorHandleSelectedLocated:   1.00 1.00 0.80    // selected handle on cursor hover
+ChannelEditorStatsText:               1.00 1.00 1.00    // color of the stats text
+ChannelEditorTimeText:                edit_bg           // color of the bottom time text
+ChannelEditorViewLock:                grey(0.5)
+ChannelListCircleOutline:             black
 
 //
 // Channel colors
 //
 
-NormalColor:        0.0 0.0 0.0       // not used
-LockedColor:        HSV 200 0.3 0.3   // locked parameter
-PendingColor:       HSV 60 0.5 0.5    // pending change
-IsKeyColor:         HSV 120 0.5 0.55  // keyframe
-IsSoftKeyColor:     #0D3D28           // constant() or raw() usually
-IsNotKeyColor:      HSV 180 0.5 0.5   // not at a key (expression)
-DisabledColor:      HSV 207 0.27 0.75 // disabled (muted) from dopesheet
-ChannelLockedColor: HSV 0 0 0.2       // has "lock()" expression
-OverrideColor:      HSV 45 1 0.65     // parm overridden by chop
-OtherLanguageColor: #653D66           // expr lang differs from node lang
-AutoTakeExcluded:   HSV 42 0.17 0.31  // exluded from take and auto-take is on
-
-NonDefAccentColor:   UNK // accent for non-default parms
-ChanRefAccentColor:  UNK // accent for !!ch()!! parms
-DisabledAccentColor: UNK // accents are this color when disabled
-
-ScopedBlend:             0.9 0.25 0.97
-ScopedBaseColor:         EDIT_BG
-ScopedColor:             HSV 40 0.825 0.525
-ScopedBaseSelectedColor: EDIT_BG
-ScopedSelectedColor:     white
-#AutoScopedColor:        HSV 40 0.125 0.375  // low sat. orange grey, matches orange selection hue
-AutoScopedColor:         HSV 210 0.125 0.375 // low sat. blue grey, matches blue slider hue
-ScopedAlpha:             1.0 1.0 1.0
+NormalColor:                          0.0 0.0 0.0       // not used
+LockedColor:                          hsv 200 0.3 0.3   // locked parameter
+PendingColor:                         hsv 60 0.5 0.5    // pending change
+IsKeyColor:                           hsv 120 0.5 0.55  // keyframe
+IsSoftKeyColor:                       #0D3D28           // constant() or raw() usually
+IsNotKeyColor:                        hsv 180 0.5 0.5   // not at a key (expression)
+DisabledColor:                        hsv 207 0.27 0.75 // disabled (muted) from dopesheet
+ChannelLockedColor:                   hsv 0 0 0.2       // has "lock()" expression
+OverrideColor:                        hsv 45 1 0.65     // parm overridden by chop
+OtherLanguageColor:                   #653D66           // expr lang differs from node lang
+AutoTakeExcluded:                     hsv 42 0.17 0.31  // exluded from take and auto-take is on
+
+NonDefAccentColor:                    unknown // accent for non-default parms
+ChanRefAccentColor:                   unknown // accent for !!ch()!! parms
+DisabledAccentColor:                  unknown // accents are this color when disabled
+
+ScopedBlend:                          0.9 0.25 0.97
+ScopedBaseColor:                      edit_bg
+ScopedColor:                          HSV 40 0.825 0.525
+ScopedBaseSelectedColor:              edit_bg
+ScopedSelectedColor:                  white
+#AutoScopedColor:                     hsv 40 0.125 0.375  // low sat. orange grey, matches orange selection hue
+AutoScopedColor:                      hsv 210 0.125 0.375 // low sat. blue grey, matches blue slider hue
+ScopedAlpha:                          1.0 1.0 1.0
 
 // Borders indicating associated handle
-InvisibleHandleColor: 0.70 0.00 0.00 // invisible, probably XCF. See rows/columns in Torus SOP
-VisibleHandleColor:   0.00 0.50 0.50 // visible e.g. xform handle
-ActiveHandleColor:    SELECTION_BASE // active
+InvisibleHandleColor:                 0.70 0.00 0.00 // invisible, probably XCF. See rows/columns in Torus SOP
+VisibleHandleColor:                   0.00 0.50 0.50 // visible e.g. xform handle
+ActiveHandleColor:                    selection_base // active
 
 //
 // Channels
@@ -105,40 +105,40 @@ ActiveHandleColor:    SELECTION_BASE // active
 // ch., its node and ch. name is used ex. point1/tx and point1/vx will reds of
 // different hues, which will differ from point2/tx and point2/vx
 
-ChannelColorRed1:   0.8 0.15 0.15      // red
-ChannelColorRed2:   hsv 320.0 1.0 0.75 // before red
-ChannelColorRed3:   hsv 340.0 1.0 0.75
-ChannelColorRed4:   hsv 20.0 1.0 0.75  // after red
-ChannelColorRed5:   hsv 40.0 1.0 0.75
-ChannelColorGreen1: 0.15 0.8 0.15      // green
-ChannelColorGreen2: hsv 80.0 1.0 0.75  // before green
-ChannelColorGreen3: hsv 100.0 1.0 0.75
-ChannelColorGreen4: hsv 140.0 1.0 0.75 // after green
-ChannelColorGreen5: hsv 160.0 1.0 0.75
-ChannelColorBlue1:  0.15 0.15 0.8      // blue
-ChannelColorBlue2:  hsv 200.0 1.0 0.75 // before blue
-ChannelColorBlue3:  hsv 220.0 1.0 0.75
-ChannelColorBlue4:  hsv 260.0 1.0 0.75 // after blue
-ChannelColorBlue5:  hsv 280.0 1.0 0.75
-ChannelColorOther1: hsv 60.0 1.0 0.75  // yellow
-ChannelColorOther2: hsv 180.0 1.0 0.75 // aqua
-ChannelColorOther3: hsv 300.0 1.0 0.75 // purple
-ChannelColorOther4: hsv 60.0 1.0 0.5   // dark yellow
-ChannelColorOther5: hsv 180.0 1.0 0.5  // dark aqua
-ChannelColorOther6: hsv 300.0 1.0 0.5  // dark purple
+ChannelColorRed1:                     0.8 0.15 0.15      // red
+ChannelColorRed2:                     hsv 320.0 1.0 0.75 // before red
+ChannelColorRed3:                     hsv 340.0 1.0 0.75
+ChannelColorRed4:                     hsv 20.0 1.0 0.75  // after red
+ChannelColorRed5:                     hsv 40.0 1.0 0.75
+ChannelColorGreen1:                   0.15 0.8 0.15      // green
+ChannelColorGreen2:                   hsv 80.0 1.0 0.75  // before green
+ChannelColorGreen3:                   hsv 100.0 1.0 0.75
+ChannelColorGreen4:                   hsv 140.0 1.0 0.75 // after green
+ChannelColorGreen5:                   hsv 160.0 1.0 0.75
+ChannelColorBlue1:                    0.15 0.15 0.8      // blue
+ChannelColorBlue2:                    hsv 200.0 1.0 0.75 // before blue
+ChannelColorBlue3:                    hsv 220.0 1.0 0.75
+ChannelColorBlue4:                    hsv 260.0 1.0 0.75 // after blue
+ChannelColorBlue5:                    hsv 280.0 1.0 0.75
+ChannelColorOther1:                   hsv 60.0 1.0 0.75  // yellow
+ChannelColorOther2:                   hsv 180.0 1.0 0.75 // aqua
+ChannelColorOther3:                   hsv 300.0 1.0 0.75 // purple
+ChannelColorOther4:                   hsv 60.0 1.0 0.5   // dark yellow
+ChannelColorOther5:                   hsv 180.0 1.0 0.5  // dark aqua
+ChannelColorOther6:                   hsv 300.0 1.0 0.5  // dark purple
 
 //
 // CHOP editor
 //
 
-ChopEditorTimeBar: 0.00 0.00 0.00
+ChopEditorTimeBar:                    0.00 0.00 0.00
 
 //
 // File dependency dialog
 //
 
-FileDepAcceptColor: 0.0 1.0 0.0
-FileDepRejectColor: 1.0 0.0 0.0
+FileDepAcceptColor:                   0.0 1.0 0.0
+FileDepRejectColor:                   1.0 0.0 0.0
 
 //
 // Geometry groups
@@ -147,107 +147,107 @@ FileDepRejectColor: 1.0 0.0 0.0
 // These two colors specify opposite corners of a quadrilateral in HSV space.
 // Colors for geometry groups are sampled from this quad.
 
-GeoGroupColor1: hsv 90.0 0.3 1.0
-GeoGroupColor2: hsv 330.0 0.6 1.0
+GeoGroupColor1:                       hsv 90.0 0.3 1.0
+GeoGroupColor2:                       hsv 330.0 0.6 1.0
 
 //
 // Hotkey editor keyboard
 //
 
-KeyCapUnavailableFill:    #323232
-KeyCapUnavailableHover:   #424242
-KeyCapAssignedFill:       #515151
-KeyCapAssignedHover:      #616161
-KeyCapDefaultFill:        #858585
-KeyCapDefaultHover:       #959595
-ModifierKeyOffFill:       #292929
-ModifierKeyOffHover:      #393939
-KeyCapSelectionBorder:    white
-KeyCapSelectionText:      white
-ShiftKeyBorder:           #7F5050
-ShiftKeyFill:             #AF7070
-ShiftKeyHilite:           #CF9090
-CtrlKeyBorder:            #436892
-CtrlKeyFill:              #5883B4
-CtrlKeyHilite:            #78A3D4
-AltKeyBorder:             #658245
-AltKeyFill:               #8EA37D
-AltKeyHilite:             #AEC39D
-CmdKeyBorder:             #9A7B49
-CmdKeyFill:               #BBAB28
-CmdKeyHilite:             #DBCB48
-HotkeyMgrUnboundActionFG: SHADOW3 // may be unused
+KeyCapUnavailableFill:                #323232
+KeyCapUnavailableHover:               #424242
+KeyCapAssignedFill:                   #515151
+KeyCapAssignedHover:                  #616161
+KeyCapDefaultFill:                    #858585
+KeyCapDefaultHover:                   #959595
+ModifierKeyOffFill:                   #292929
+ModifierKeyOffHover:                  #393939
+KeyCapSelectionBorder:                white
+KeyCapSelectionText:                  white
+ShiftKeyBorder:                       #7F5050
+ShiftKeyFill:                         #AF7070
+ShiftKeyHilite:                       #CF9090
+CtrlKeyBorder:                        #436892
+CtrlKeyFill:                          #5883B4
+CtrlKeyHilite:                        #78A3D4
+AltKeyBorder:                         #658245
+AltKeyFill:                           #8EA37D
+AltKeyHilite:                         #AEC39D
+CmdKeyBorder:                         #9A7B49
+CmdKeyFill:                           #BBAB28
+CmdKeyHilite:                         #DBCB48
+HotkeyMgrUnboundActionFG:             shadow3 // may be unused
 
 //
 // Icons
 //
 
-IconBackgroundColor: black     // ?
-IconOutlineColor:    GREY(0.8) // ?
-IconShadowColor:     black     // ?
-IconLocatedColor:    UNK       // ?
-IconBrightness:      1.0
-IconContrast:        1
-IconGamma:           1
-IconSaturation:      0.5
+IconBackgroundColor:                  black     // ?
+IconOutlineColor:                     grey(0.8) // ?
+IconShadowColor:                      black     // ?
+IconLocatedColor:                     unknown       // ?
+IconBrightness:                       1.0
+IconContrast:                         1
+IconGamma:                            1
+IconSaturation:                       0.5
 
 //
 // Info button indicator (??)
 //
 
-ErrorFlag:    0.9 0.1 0.1
-WarningFlag:  1 1 0
-MessageFlag:  0.8 0.8 0.8
-FilteredFlag: 0.6 0.6 0.6
-NoSaveFlag:   0.0 0.4 0.1 // used in the resource managers for .nosave files
+ErrorFlag:                            0.9 0.1 0.1
+WarningFlag:                          1 1 0
+MessageFlag:                          0.8 0.8 0.8
+FilteredFlag:                         0.6 0.6 0.6
+NoSaveFlag:                           0.0 0.4 0.1 // used in the resource managers for .nosave files
 
 //
 // Lists/spreadsheets
 //
 
-ListShadow:                BG_LO
-ListHighlight:             BG_LO
-ListBorder:                BG_LO
-ListBG:                    BG_LO        // bg in download color scheme window
-ListEntry1:                LISTB
-ListEntry2:                LISTA
-ListEntrySelected:         SEL
-ListTitleShadow:           GREY(0.1)    // ??
-ListTitleHighlight:        BG_LO        // ss row number border
-ListTitleGradHi:           BG_LO        // ss row number bg
-ListTitleGradLow:          BG_LO        // ss row number bg
-ListTitleHighlightGradHi:  HSV 36 1 0.8 // ??
-ListTitleHighlightGradLow: HSV 36 1 0.8 // ??
-ListTitleFilteredText:     SELECTION_BASE
-ListText:                  TEXT         // download color scheme popup, package browser
-ListAltText:               HSV 40 0.85 1.0
-ListHoverHighlight:        GREY(0.28)
-
-ListTitleColor:         EDIT_BG
-ListEntryColor:         GREY(0.62)
-ListEntrySelectedColor: 0.93 0.86 0.51
-
-SSBorder:               SEL             // divider line between spreadsheet columns
-SSOutline:              DropIndicator   // drag And Drop Outline in spreadsheet
-SSHeader:               GREY(0.29)      // ??
-SSTableBackgroundColor: 0.9 0.9 0.9     // ??
-SSTableSelectedColor:   0.125 0.125 1.0 // ??
-SSTableBackgroundColor: 0.9 0.9 0.9
-SSTableSelectedColor:   0.125 0.125 1.0
+ListShadow:                           bg_low
+ListHighlight:                        bg_low
+ListBorder:                           bg_low
+ListBG:                               bg_low        // bg in download color scheme window
+ListEntry1:                           list_b
+ListEntry2:                           list_a
+ListEntrySelected:                    selection
+ListTitleShadow:                      grey(0.1)    // ??
+ListTitleHighlight:                   bg_low        // ss row number border
+ListTitleGradHi:                      bg_low        // ss row number bg
+ListTitleGradLow:                     bg_low        // ss row number bg
+ListTitleHighlightGradHi:             hsv 36 1 0.8 // ??
+ListTitleHighlightGradLow:            hsv 36 1 0.8 // ??
+ListTitleFilteredText:                selection_base
+ListText:                             text         // download color scheme popup, package browser
+ListAltText:                          hsv 40 0.85 1.0
+ListHoverHighlight:                   grey(0.28)
+
+ListTitleColor:                       edit_bg
+ListEntryColor:                       grey(0.62)
+ListEntrySelectedColor:               0.93 0.86 0.51
+
+SSBorder:                             selection_base             // divider line between spreadsheet columns
+SSOutline:                            drop_indicator   // drag And Drop Outline in spreadsheet
+SSHeader:                             grey(0.29)      // ??
+SSTableBackgroundColor:               0.9 0.9 0.9     // ??
+SSTableSelectedColor:                 0.125 0.125 1.0 // ??
+SSTableBackgroundColor:               0.9 0.9 0.9
+SSTableSelectedColor:                 0.125 0.125 1.0
 
 // highlight Color Alpha in channel lister
 // R: displayed ch alpha
 // G: graph selected ch alpha
-SSHighlightAlpha: 0.25 0.55 0.0
+SSHighlightAlpha:                     0.25 0.55 0.0
 
 //
 // MPlay
 //
 
-MplayInspectBox:       GREY(0.8)
-MplayInspectBorder:    GREY(0.3)
-MplayInspectText:      black
-MplayColorCorrectWarn: 1 1 0.75
+MplayInspectBox:                      grey(0.8)
+MplayInspectBorder:                   grey(0.3)
+MplayInspectText:                     black
+MplayColorCorrectWarn:                1 1 0.75
 
 //
 // Operator properties
@@ -259,622 +259,622 @@ MplayColorCorrectWarn: 1 1 0.75
 // arbitrary thing (network BG color?). Anyway, leaving the value at one seems
 // to force it into a happy state.
 
-OpNameNoneColor:     TEXT
-OpNameCommentsColor: HSV 240 0.6 1
-OpNameAnimatedColor: UNK
-OpNameModifiedColor: UNK
-OpNameChoppedColor:  UNK
-OpNameSyncedColor:   HSV 200 0.6 1
-OpNameUnsyncedColor: HSV 0 0.6 1
-OpNameSubnetColor:   HSV 240 0.3 1
+OpNameNoneColor:                      text
+OpNameCommentsColor:                  hsv 240 0.6 1
+OpNameAnimatedColor:                  unknown
+OpNameModifiedColor:                  unknown
+OpNameChoppedColor:                   unknown
+OpNameSyncedColor:                    hsv 200 0.6 1
+OpNameUnsyncedColor:                  hsv 0 0.6 1
+OpNameSubnetColor:                    hsv 240 0.3 1
 
-ParmTitleBarNumSelectedColor: 1.0 1.0 0.0 // text in parm title bar showing # selected nodes
+ParmTitleBarNumSelectedColor:         1.0 1.0 0.0 // text in parm title bar showing # selected nodes
 
-AutoTakeModeColor: 0.40 0.70 0.40 // text in take label indicating auto take mode
+AutoTakeModeColor:                    0.40 0.70 0.40 // text in take label indicating auto take mode
 
 //
 // Pane tabs
 //
 
-PaneTabActiveHi:    BG_HI
-PaneTabActiveLow:   BG_HI
-PaneTabInactiveHi:  BG_LO
-PaneTabInactiveLow: BG_LO
-PaneTabEdges:       BG_LO
-PaneEmptyBG:        BG_LO
-PaneBorder:         BG_LO
-PaneHeaderGradHi:   BUTTON // path gadget bg
-PaneHeaderGradLow:  BUTTON // path gadget bg
-PaneTabShadow:      BG_LO
-PaneTabMarker:      SEL
-
-ObjectColor:  HSV 210 0.20 1.75
-SopColor:     HSV 100 0.20 2
-DopColor:     HSV 0 0.20 2
-PopNetColor:  HSV 170 0.20 1.75
-PopColor:     HSV 170 0.20 1.75
-ShopColor:    HSV 340 0.20 1.75
-VopNetColor:  HSV 260 0.20 1.75
-VopColor:     HSV 260 0.20 1.75
-ChopNetColor: HSV 60 0.20 1.75
-ChopColor:    HSV 60 0.20 1.75
-CopNet2Color: HSV 40 0.20 2
-CopColor:     HSV 40 0.20 2
-Cop2Color:    HSV 40 0.20 2
-OutputColor:  HSV 20 0.20 2
-RootColor:    HSV 0 0 1
+PaneTabActiveHi:                      bg_high
+PaneTabActiveLow:                     bg_high
+PaneTabInactiveHi:                    bg_low
+PaneTabInactiveLow:                   bg_low
+PaneTabEdges:                         bg_low
+PaneEmptyBG:                          bg_low
+PaneBorder:                           bg_low
+PaneHeaderGradHi:                     bg_high // path gadget bg
+PaneHeaderGradLow:                    bg_low // path gadget bg
+PaneTabShadow:                        bg_low
+PaneTabMarker:                        selection_base
+
+ObjectColor:                          hsv 210 0.20 1.75
+SopColor:                             hsv 100 0.20 2
+DopColor:                             hsv 0 0.20 2
+PopNetColor:                          hsv 170 0.20 1.75
+PopColor:                             hsv 170 0.20 1.75
+ShopColor:                            hsv 340 0.20 1.75
+VopNetColor:                          hsv 260 0.20 1.75
+VopColor:                             hsv 260 0.20 1.75
+ChopNetColor:                         hsv 60 0.20 1.75
+ChopColor:                            hsv 60 0.20 1.75
+CopNet2Color:                         hsv 40 0.20 2
+CopColor:                             hsv 40 0.20 2
+Cop2Color:                            hsv 40 0.20 2
+OutputColor:                          hsv 20 0.20 2
+RootColor:                            hsv 0 0 1
 
 //
 // Pane - Network editor list mode
 //
 
-OpListHeaderBGColor:    GREY(0.7)
-OpListSplitterColor:    black
-OpListSelectionBGColor: SELECTION_BASE
-OpListSelectionFGColor: white
+OpListHeaderBGColor:                  grey(0.7)
+OpListSplitterColor:                  black
+OpListSelectionBGColor:               selection_base
+OpListSelectionFGColor:               white
 
 //
 // Pane - Parameters
 //
 
-GroupBorder:             GREY(0.11)
-GroupLight:              GREY(0.29)
-GroupHeader0:            BUTTON
-GroupHeaderTop0:         BUTTON
-GroupHeaderHi0:          SEL
-GroupHeaderHiTop0:       SEL
-GroupHeaderOpen0:        BUTTON
-GroupHeaderOpenTop0:     BUTTON
-GroupHeaderDisabled0:    DISABLED
-GroupHeaderDisabledTop0: DISABLED
-GroupBody0:              BG_MED
-GroupHeader1:            BUTTON
-GroupHeaderTop1:         BUTTON
-GroupHeaderHi1:          SEL
-GroupHeaderHiTop1:       SEL
-GroupHeaderOpen1:        BUTTON
-GroupHeaderOpenTop1:     BUTTON
-GroupHeaderDisabled1:    DISABLED
-GroupHeaderDisabledTop1: DISABLED
-GroupBody1:              BG_MED
-GroupHeader2:            BUTTON
-GroupHeaderTop2:         BUTTON
-GroupHeaderHi2:          SEL
-GroupHeaderHiTop2:       SEL
-GroupHeaderOpen2:        BUTTON
-GroupHeaderOpenTop2:     BUTTON
-GroupHeaderDisabled2:    DISABLED
-GroupHeaderDisabledTop2: DISABLED
-GroupBody2:              BG_MED
-GroupHeader3:            BUTTON
-GroupHeaderTop3:         BUTTON
-GroupHeaderHi3:          SEL
-GroupHeaderHiTop3:       SEL
-GroupHeaderOpen3:        BUTTON
-GroupHeaderOpenTop3:     BUTTON
-GroupHeaderDisabled3:    DISABLED
-GroupHeaderDisabledTop3: DISABLED
-GroupBody3:              BG_MED
+GroupBorder:                          grey(0.11)
+GroupLight:                           grey(0.29)
+GroupHeader0:                         button
+GroupHeaderTop0:                      button
+GroupHeaderHi0:                       selection
+GroupHeaderHiTop0:                    selection
+GroupHeaderOpen0:                     button
+GroupHeaderOpenTop0:                  button
+GroupHeaderDisabled0:                 disabled
+GroupHeaderDisabledTop0:              disabled
+GroupBody0:                           bg_medium
+GroupHeader1:                         button
+GroupHeaderTop1:                      button
+GroupHeaderHi1:                       selection
+GroupHeaderHiTop1:                    selection
+GroupHeaderOpen1:                     button
+GroupHeaderOpenTop1:                  button
+GroupHeaderDisabled1:                 disabled
+GroupHeaderDisabledTop1:              disabled
+GroupBody1:                           bg_medium
+GroupHeader2:                         button
+GroupHeaderTop2:                      button
+GroupHeaderHi2:                       selection
+GroupHeaderHiTop2:                    selection
+GroupHeaderOpen2:                     button
+GroupHeaderOpenTop2:                  button
+GroupHeaderDisabled2:                 disabled
+GroupHeaderDisabledTop2:              disabled
+GroupBody2:                           bg_medium
+GroupHeader3:                         button
+GroupHeaderTop3:                      button
+GroupHeaderHi3:                       selection
+GroupHeaderHiTop3:                    selection
+GroupHeaderOpen3:                     button
+GroupHeaderOpenTop3:                  button
+GroupHeaderDisabled3:                 disabled
+GroupHeaderDisabledTop3:              disabled
+GroupBody3:                           bg_medium
 
 //
 // Pane - Parameter spreadsheets
 //
 
-ParmSheetEmptyColor:  0.65 0.65 0.65
-ParmSheetHeaderColor: 0.60 0.60 0.60
+ParmSheetEmptyColor:                  0.65 0.65 0.65
+ParmSheetHeaderColor:                 0.60 0.60 0.60
 
 //
 // Parameter - Button/menu
 //
 
-ButtonGradHi:           BUTTON
-ButtonGradLow:          BUTTON
-ButtonNonActiveGradLow: BG_LO // bottom of unselected parm tabs
+ButtonGradHi:                         bg_high
+ButtonGradLow:                        bg_low
+ButtonNonActiveGradLow:               bg_low // bottom of unselected parm tabs
 
-ButtonShadowLight:   BG_HI  // ss pane border, playbar border, scene viewer menu buttons, network editor menu
-ButtonShadowMed:     SEP    // lines between playbar buttons, stowbar arrows, line around some parameter folders
-ButtonShadowMedDark: SEL    // selected sceneviewer toolbar item
-ButtonShadowDark:    BG_HI  // ui borders, path gadget border
-ButtonShadow:        BUTTON // actual button shadow
+ButtonShadowLight:                    bg_high // ss pane border, playbar border, scene viewer menu buttons, network editor menu
+ButtonShadowMed:                      separator    // lines between playbar buttons, stowbar arrows, line around some parameter folders
+ButtonShadowMedDark:                  selection    // selected sceneviewer toolbar item
+ButtonShadowDark:                     bg_high  // ui borders, path gadget border
+ButtonShadow:                         button // actual button shadow
 
-ButtonText:           TEXT
-ButtonHoverHighlight: BUTTON
-ButtonPressedText:    TEXT
+ButtonText:                           text
+ButtonHoverHighlight:                 button
+ButtonPressedText:                    text
 
-ButtonPressedText2:   GREY(0.1) // viewer toolbar buttons
-ButtonPressedGradHi:  SEL       // viewer toolbar buttons, pin
-ButtonPressedGradLow: SEL       // viewer toolbar buttons, pin
+ButtonPressedText2:                   grey(0.1) // viewer toolbar buttons
+ButtonPressedGradHi:                  selection       // viewer toolbar buttons, pin
+ButtonPressedGradLow:                 selection       // viewer toolbar buttons, pin
 
-ButtonMenuArrowHi:   BUTTON // bg
-ButtonMenuArrowLow:  BUTTON // bg
-ButtonMenuArrow:     arrow
-ButtonArrow:         arrow
-ButtonArrowDisabled: BG_LO
-ButtonArrowPressed:  BG_LO
-ButtonArrowModified: SHADOW1
+ButtonMenuArrowHi:                    bg_high // bg
+ButtonMenuArrowLow:                   bg_low // bg
+ButtonMenuArrow:                      border
+ButtonArrow:                          arrow
+ButtonArrowDisabled:                  bg_low
+ButtonArrowPressed:                   bg_low
+ButtonArrowModified:                  shadow1
 
-MenuBG:                 BG_HI // network menu bar
-MenuText:               TEXT
-MenuTextDisabled:       TEXT_DIM
-MenuTextHotkey:         TEXT_DIM
-MenuHighlight:          GREY(0.3)
-MenuShadow:             GREY(0.3)
-MenuTextSelected:       white
-MenuSelectedBG:         SEL
-MenuTitleBG:            BG_LO
-InvertedMenuBackground: GREY(0.8)
+MenuBG:                               bg_high // network menu bar
+MenuText:                             text
+MenuTextDisabled:                     text_dim
+MenuTextHotkey:                       text_dim
+MenuHighlight:                        border
+MenuShadow:                           border
+MenuTextSelected:                     white
+MenuSelectedBG:                       selection
+MenuTitleBG:                          bg_low
+InvertedMenuBackground:               grey(0.8)
 
-HyperTextLinkColor: 1.0 0.0 1.0 // buttons that simulate a hypertext link (may be not used)
+HyperTextLinkColor:                   1.0 0.0 1.0 // buttons that simulate a hypertext link (may be not used)
 
 //
 // Parameter - Check
 //
 
-CheckBG:      BG_LO
-CheckLocated: SEL
-CheckColor:   TEXT
+CheckBG:                              bg_low
+CheckLocated:                         selection
+CheckColor:                           text
 
 //
 // Parameter - Ladder
 //
 
-LadderBG:        BUTTON
-LadderText:      TEXT
-LadderHighlight: SEL
-LadderOutline:   BORDER
-LadderShadow:    red
+LadderBG:                             button
+LadderText:                           text
+LadderHighlight:                      selection
+LadderOutline:                        border
+LadderShadow:                         red
 
 //
 // Parameter - Lever slider
 //
 
-LeverSliderBG:                     GREY(0.12)
-LeverSliderTopBevel:               GREY(0.16)
-LeverSliderBottomBevel:            GREY(0.32)
-LeverSliderLeftBevel:              GREY(0.17)
-LeverSliderRightBevel:             GREY(0.25)
-LeverSliderFilledBevelTop:         #3d4a60
-LeverSliderFilled:                 #4b5f7d
-LeverSliderFilledBevelBottom:      #272a30
-LeverSliderTick:                   GREY(0.17)
-LeverSliderValueText:              GREY(0.75)
-LeverSliderThumbText:              GREY(0.77)
-LeverSliderThumbTopBevel:          GREY(0.36)
-LeverSliderThumbBottomBevel:       GREY(0.09)
-LeverSliderThumbTopBorder:         GREY(0.2)
-LeverSliderThumbBottomBorder:      black
-LeverSliderThumbGradBottom:        GREY(0.22)
-LeverSliderThumbGradTop:           GREY(0.36)
-LeverSliderThumbRangeArrow:        black
-LeverSliderThumbPressedGradBottom: SEL
-LeverSliderThumbPressedGradTop:    SEL
+LeverSliderBG:                        grey(0.12)
+LeverSliderTopBevel:                  grey(0.16)
+LeverSliderBottomBevel:               grey(0.32)
+LeverSliderLeftBevel:                 grey(0.17)
+LeverSliderRightBevel:                grey(0.25)
+LeverSliderFilledBevelTop:            #3d4a60
+LeverSliderFilled:                    #4b5f7d
+LeverSliderFilledBevelBottom:         #272a30
+LeverSliderTick:                      grey(0.17)
+LeverSliderValueText:                 grey(0.75)
+LeverSliderThumbText:                 grey(0.77)
+LeverSliderThumbTopBevel:             grey(0.36)
+LeverSliderThumbBottomBevel:          grey(0.09)
+LeverSliderThumbTopBorder:            grey(0.2)
+LeverSliderThumbBottomBorder:         black
+LeverSliderThumbGradBottom:           grey(0.22)
+LeverSliderThumbGradTop:              grey(0.36)
+LeverSliderThumbRangeArrow:           black
+LeverSliderThumbPressedGradBottom:    selection
+LeverSliderThumbPressedGradTop:       selection
 
 //
 // Parameter - Radio
 //
 
-RadioBG:           BUTTON
-RadioBorder:       BORDER
-RadioDot:          TEXT
-RadioDotHighlight: SEL
+RadioBG:                              button
+RadioBorder:                          border
+RadioDot:                             text
+RadioDotHighlight:                    selection
 
 //
 // Parameter - Ramp
 //
 
-RampBG:               #170702
-RampFG:               #382100
-RampBGDisabled:       GREY(0.3)
-RampFGDisabled:       GREY(0.45)
-RampGrid:             GREY(0.3)
-RampCurve:            #804C00
-RampCurveDisabled:    SHADOW2
-RampKeyBG:            #750046
-RampKeyFG:            BUTTON_PRESS
-RampKeyDisabled:      SHADOW2
-RampKeyHoverBG:       SELECTION_HILIGHT2
-RampKeyHoverFG:       SELECTION_BASE
-RampHandleBG:         #004A98
-RampHandleFG:         #FF9600
-RampHandleHoverBG:    #004a98
-RampHandleHoverFG:    white
-RampHandleLines:      #004a98
-RampHandleLinesHover: white
-RampBoxSelect:        GREY(0.3)
-RampMarkerHover:      BUTTON_SEL
-RampConstraintGuide:  BUTTON_SEL
-RampOutOfRangeBG:     black
-RampOneLine:          GREY(0.8)
-RampPushingLine:      YELLOW
-RampRetractingLine:   GREEN
-RampGrayscaleCurve:   0.0 0.7 1
+RampBG:                               #170702
+RampFG:                               #382100
+RampBGDisabled:                       grey(0.3)
+RampFGDisabled:                       grey(0.45)
+RampGrid:                             grey(0.3)
+RampCurve:                            #804C00
+RampCurveDisabled:                    shadow2
+RampKeyBG:                            #750046
+RampKeyFG:                            button_press
+RampKeyDisabled:                      shadow2
+RampKeyHoverBG:                       selection_highlight2
+RampKeyHoverFG:                       selection_base
+RampHandleBG:                         #004A98
+RampHandleFG:                         #FF9600
+RampHandleHoverBG:                    #004a98
+RampHandleHoverFG:                    white
+RampHandleLines:                      #004a98
+RampHandleLinesHover:                 white
+RampBoxSelect:                        grey(0.3)
+RampMarkerHover:                      button_selection
+RampConstraintGuide:                  button_selection
+RampOutOfRangeBG:                     black
+RampOneLine:                          grey(0.8)
+RampPushingLine:                      yellow
+RampRetractingLine:                   green
+RampGrayscaleCurve:                   0.0 0.7 1
 
 //
 // Parameter - Range slider
 //
 
-RangeSliderBackground:    EDIT_BG
-RangeSliderRect:          GREY(0.45)
-RangeSliderRectLocated:   GREY(0.65)
-RangeSliderRectSelected:  GREY(1.00)
-RangeSliderArrow:         GREY(0.65)
-RangeSliderArrowLocated:  GREY(0.85)
-RangeSliderArrowSelected: GREY(1.00)
+RangeSliderBackground:                edit_bg
+RangeSliderRect:                      grey(0.45)
+RangeSliderRectLocated:               grey(0.65)
+RangeSliderRectSelected:              grey(1.00)
+RangeSliderArrow:                     grey(0.65)
+RangeSliderArrowLocated:              grey(0.85)
+RangeSliderArrowSelected:             grey(1.00)
 
 //
 // Parameter - Separator
 //
 
-Separator: BG_LO // network menu border, pane tab border, viewer menu border
+Separator:                            bg_low // network menu border, pane tab border, viewer menu border
 
 //
 // Parameter - Slider
 //
 
-SliderTopBorder:       BG_LO
-SliderBottomBorder:    BG_LO
-SliderAdvancedBevel:   SEL
-SliderAdvancedGroove:  SEL
-SliderRemainingBevel:  BG_LO
-SliderRemainingGroove: BG_LO
-SliderTick:            SEL
-SliderTickLabel:       SEL
-SliderRangeBrackets:   SEL
+SliderTopBorder:                      bg_low
+SliderBottomBorder:                   bg_low
+SliderAdvancedBevel:                  selection
+SliderAdvancedGroove:                 selection
+SliderRemainingBevel:                 bg_low
+SliderRemainingGroove:                bg_low
+SliderTick:                           selection
+SliderTickLabel:                      selection
+SliderRangeBrackets:                  selection
 
-SliderThumbGradHi:         SEL
-SliderThumbGradLow:        SEL
-SliderThumbPressedGradHi:  PRESSED_HIGH
-SliderThumbPressedGradLow: PRESSED_LOW
-SliderThumbTopBorder:      SEP
-SliderThumbTopBevel:       SEL
-SliderThumbBottomBevel:    SEL
-SliderThumbBottomBorder:   SEP
-SliderThumbRangeArrow:     black
+SliderThumbGradHi:                    selection
+SliderThumbGradLow:                   selection
+SliderThumbPressedGradHi:             pressed_high
+SliderThumbPressedGradLow:            pressed_low
+SliderThumbTopBorder:                 separator
+SliderThumbTopBevel:                  selection
+SliderThumbBottomBevel:               selection
+SliderThumbBottomBorder:              separator
+SliderThumbRangeArrow:                black
 
 //
 // Parameter - Textbox
 //
 
-TextboxBG:              BG_LO // python shell shadow
-TextboxInvalidBG:       0.95 0.56 0.56
-TextboxBorderPrimary:   BG_HI
-TextboxBorderHighlight: BG_HI
-TextboxBorderStippled:  SEL
-TextboxBorderKeyFocus:  SEL
-TextboxError:           ERR
-TextboxGutter:          BG_HI
-TextboxDropMarker:      HSV 238 0.40 0.88
-TextboxFeedbackFG:      GREY(0.5)
-TextboxFeedbackBG:      UNK
-SelectedTextFG:         GREY(0.5)
-SelectedTextBG:         #ffff00 // selection, cursor
-SelectedTextDisabledBG: GREY(0.3)
-TextboxLineNumberBG:    BG_LO
-TextboxLineNumberFG:    TEXT
+TextboxBG:                            bg_low // python shell shadow
+TextboxInvalidBG:                     0.95 0.56 0.56
+TextboxBorderPrimary:                 bg_high
+TextboxBorderHighlight:               bg_high
+TextboxBorderStippled:                selection
+TextboxBorderKeyFocus:                selection
+TextboxError:                         error
+TextboxGutter:                        bg_high
+TextboxDropMarker:                    hsv 238 0.40 0.88
+TextboxFeedbackFG:                    grey(0.5)
+TextboxFeedbackBG:                    unknown
+SelectedTextFG:                       grey(0.5)
+SelectedTextBG:                       #ffff00 // selection, cursor
+SelectedTextDisabledBG:               grey(0.3)
+TextboxLineNumberBG:                  bg_low
+TextboxLineNumberFG:                  text
 
 //
 // Path gadget
 //
 
-PathGadgetArrow1:                     GREY(0.5)
-PathGadgetArrow2:                     GREY(0.5)
-PathGadgetArrow3:                     GREY(0.5)
+PathGadgetArrow1:                     grey(0.5)
+PathGadgetArrow2:                     grey(0.5)
+PathGadgetArrow3:                     grey(0.5)
 PathGadgetArrow1Selected:             arrow
 PathGadgetArrow2Selected:             arrow
 PathGadgetArrow3Selected:             arrow
-PathGadgetPrimaryBorder:              BUTTON
-PathGadgetSecondaryBorder:            BUTTON
-PathGadgetPrimaryBorderSelected:      SEL
-PathGadgetSecondaryBorderSelected:    SEL
-PathGadgetBevel:                      BUTTON
-PathGadgetBevelSelected:              SEL
-PathGadgetText:                       TEXT
-PathGadgetGradHi:                     BUTTON
-PathGadgetGradLow:                    BUTTON
-PathGadgetGradHiSelected:             SEL
-PathGadgetGradLowSelected:            SEL
-PathGadgetHistoryButtonBevel:         BG_HI
-PathGadgetHistoryButtonBevelSelected: SEL
+PathGadgetPrimaryBorder:              bg_high
+PathGadgetSecondaryBorder:            bg_low
+PathGadgetPrimaryBorderSelected:      selection
+PathGadgetSecondaryBorderSelected:    selection
+PathGadgetBevel:                      bg_high
+PathGadgetBevelSelected:              selection
+PathGadgetText:                       text
+PathGadgetGradHi:                     bg_high
+PathGadgetGradLow:                    bg_low
+PathGadgetGradHiSelected:             selection
+PathGadgetGradLowSelected:            selection
+PathGadgetHistoryButtonBevel:         bg_high
+PathGadgetHistoryButtonBevelSelected: selection
 
 //
 // Performance
 //
 
-PerformanceGood: 0.45 0.82 0.08
-PerformanceBad:  0.8 0 0
-PerformanceWarn: #F87431
+PerformanceGood:                      0.45 0.82 0.08
+PerformanceBad:                       0.8 0 0
+PerformanceWarn:                      #F87431
 
-RecordBtnFlash: #E61717
+RecordBtnFlash:                       #E61717
 
-NetworkPerformanceGood: #95A084
-NetworkPerformanceBad:  #D4AA9E
-NetworkPerformanceWarn: #B0A957
+NetworkPerformanceGood:               #95A084
+NetworkPerformanceBad:                #D4AA9E
+NetworkPerformanceWarn:               #B0A957
 
 //
 // Playbar/dope sheet
 //
 
-PlayBarOnColor:          0.05 0.8 0.05
-PlayBarOffColor:         0.25 0.25 0.25
-PlayBarDisabledColor:    0.4 0.4 0.4
-PlayBarResetColor:       1 1 0.0
-PlayBarNoPending:        0 0.8 0
-PlayBarNoPending2:       0 1 0
-PlayBarPending:          0.75 0.75 0.5
-PlayBarPending2:         1 1 0.5
-PlayBarAudioWaveColor:   0.643 0.643 0.643
-PlayBarStartEndFieldBG:  EDIT_BG
-PlayBarGStartEndFieldBG: GREY(0.125)
-
-Bookmark1: 0.11 0.62 0.47
-Bookmark2: 0.85 0.37 0.10
-Bookmark3: 0.46 0.44 0.70
-Bookmark4: 0.91 0.16 0.54
-Bookmark5: 0.40 0.65 0.12
-Bookmark6: 0.90 0.67 0.10
-Bookmark7: 0.65 0.46 0.11
-
-KeyframeButtonSelectedGradHi:    SEL
-KeyframeButtonSelectedGradLow:   SEL
-KeyframeButtonLocatedGradHi:     GREY(0.405)
-KeyframeButtonLocatedGradLow:    GREY(0.274)
-KeyframeButtonGradHi:            GREY(0.337)
-KeyframeButtonGradLow:           GREY(0.228)
-KeyframeButtonCircleKey:         #7ED321
-KeyframeButtonCircleSomeKey:     #356600
-KeyframeButtonCircleNoKey:       HSV 180  0.5  0.5
-KeyframeButtonCirclePending:     HSV 39 1 0.9
-KeyframeButtonBorder:            black
-KeyframeButtonCircleFillOpacity: GREY(0.2)
-
-DopeSheetCurrentFrameFG:        white
-DopeSheetCurrentFrameBG:        black
-DopeSheetHoverFrameFG:          white
-DopeSheetHoverFrameBG:          BG_LO // playbar frame number on hover
-DopeSheetHoverLine:             GREY(0.5)
-DopeSheetSimulationPlaying:     0.59 0.48 0.7
-DopeSheetTimeline:              GREY(0.7)
-DopeSheetIndicatorLine:         black
-DopeSheetIndicatorClickLine:    white
-DopeSheetIndicatorOverLine:     GREY(0.5)
-DopeSheetKnob:                  black
-DopeSheetKnobClick:             white
-DopeSheetKnobOver:              GREY(0.5)
-DopeSheetKnobPendingKey:        SELECTION_BASE
-DopeSheetKnobOutlier:           1 1 0
-DopeSheetKeyActive:             HSV 88 0.96 0.46
-DopeSheetKeyPartial2:           HSV 88 1.0 0.3
-DopeSheetKeyPartial:            HSV 88 0.96 0.7
-DopeSheetKeyPending:            SELECTION_BASE
-DopeSheetKeyMuted:              GREY(0.2)
-DopeSheetKeyOverlay:            1 0 0
-DopeSheetKeyDisabled:           0.5 0 1
-DopeSheetKeySelected:           SELECTION_HIGHLIGHT2
-DopeSheetKeySelectedBorder:     black
-DopeSheetKeySelecting:          1 0.45 0.25
-DopeSheetKeySelectingBorder:    red
-DopeSheetOutsideRangeBG:        GREY(0.3)
-DopeSheetSimulation:            MY_BLUE // Sim cache
-DopeSheetSimulationReset:       1 0.5 0
-DopeSheetTimelineAudio:         GREY(0.5)
-DopeSheetTickLarge:             GREY(0.6)
-DopeSheetTickSmall:             GREY(0.45)
-DopeSheetTickSmallAudio:        GREY(0.35)
-DopeSheetTickNumber:            GREY(0.5)
-DopeSheetRangeNumber:           GREY(0.3)
-DopeSheetRowDisabled:           black
-DopeSheetRowLight:              LISTA
-DopeSheetRowDark:               LISTB
-DopeSheetColLine:               black
-DopeSheetRowLine:               black
-DopeSheetViewLock:              GREY(0.5)
-DopeSheetSelection:             HSV 60 1.0 0.5
-DopeSheetSelectionHover:        HSV 60 0.5 0.9
-DopeSheetSelectionActive:       HSV 60 0.5 0.9
-DopeSheetSelectionInactive:     HSV 60 0.9 0.7
-DopeSheetSelectionInactiveLock: 1 0 1
-DopeSheetSelectionText:         black
-DopeSheetSelectionRemove:       1 0 0
-DopeSheetOverwriteHover:        1 0 0
-DopeSheetOverwriteActive:       0.7 0 0
-DopeSheetOverwriteInactive:     0.9 0 0
-DopeSheetSpreadSheetText:       black
-DopeSheetSpreadSheetDisabled:   0.07 0 0
-DopeSheetRippleTool:            1 1 0
+PlayBarOnColor:                       0.05 0.8 0.05
+PlayBarOffColor:                      0.25 0.25 0.25
+PlayBarDisabledColor:                 0.4 0.4 0.4
+PlayBarResetColor:                    1 1 0.0
+PlayBarNoPending:                     0 0.8 0
+PlayBarNoPending2:                    0 1 0
+PlayBarPending:                       0.75 0.75 0.5
+PlayBarPending2:                      1 1 0.5
+PlayBarAudioWaveColor:                0.643 0.643 0.643
+PlayBarStartEndFieldBG:               edit_bg
+PlayBarGStartEndFieldBG:              grey(0.125)
+
+Bookmark1:                            0.11 0.62 0.47
+Bookmark2:                            0.85 0.37 0.10
+Bookmark3:                            0.46 0.44 0.70
+Bookmark4:                            0.91 0.16 0.54
+Bookmark5:                            0.40 0.65 0.12
+Bookmark6:                            0.90 0.67 0.10
+Bookmark7:                            0.65 0.46 0.11
+
+KeyframeButtonSelectedGradHi:         selection
+KeyframeButtonSelectedGradLow:        selection
+KeyframeButtonLocatedGradHi:          grey(0.405)
+KeyframeButtonLocatedGradLow:         grey(0.274)
+KeyframeButtonGradHi:                 grey(0.337)
+KeyframeButtonGradLow:                grey(0.228)
+KeyframeButtonCircleKey:              #7ED321
+KeyframeButtonCircleSomeKey:          #356600
+KeyframeButtonCircleNoKey:            hsv 180  0.5  0.5
+KeyframeButtonCirclePending:          hsv 39 1 0.9
+KeyframeButtonBorder:                 black
+KeyframeButtonCircleFillOpacity:      grey(0.2)
+
+DopeSheetCurrentFrameFG:              white
+DopeSheetCurrentFrameBG:              black
+DopeSheetHoverFrameFG:                white
+DopeSheetHoverFrameBG:                bg_low // playbar frame number on hover
+DopeSheetHoverLine:                   grey(0.5)
+DopeSheetSimulationPlaying:           0.59 0.48 0.7
+DopeSheetTimeline:                    grey(0.7)
+DopeSheetIndicatorLine:               black
+DopeSheetIndicatorClickLine:          white
+DopeSheetIndicatorOverLine:           grey(0.5)
+DopeSheetKnob:                        black
+DopeSheetKnobClick:                   white
+DopeSheetKnobOver:                    grey(0.5)
+DopeSheetKnobPendingKey:              selection_base
+DopeSheetKnobOutlier:                 1 1 0
+DopeSheetKeyActive:                   HSV 88 0.96 0.46
+DopeSheetKeyPartial2:                 HSV 88 1.0 0.3
+DopeSheetKeyPartial:                  HSV 88 0.96 0.7
+DopeSheetKeyPending:                  selection_base
+DopeSheetKeyMuted:                    grey(0.2)
+DopeSheetKeyOverlay:                  1 0 0
+DopeSheetKeyDisabled:                 0.5 0 1
+DopeSheetKeySelected:                 selection_highlight2
+DopeSheetKeySelectedBorder:           black
+DopeSheetKeySelecting:                1 0.45 0.25
+DopeSheetKeySelectingBorder:          red
+DopeSheetOutsideRangeBG:              grey(0.3)
+DopeSheetSimulation:                  hc_blue // Sim cache
+DopeSheetSimulationReset:             1 0.5 0
+DopeSheetTimelineAudio:               grey(0.5)
+DopeSheetTickLarge:                   grey(0.6)
+DopeSheetTickSmall:                   grey(0.45)
+DopeSheetTickSmallAudio:              grey(0.35)
+DopeSheetTickNumber:                  grey(0.5)
+DopeSheetRangeNumber:                 grey(0.3)
+DopeSheetRowDisabled:                 black
+DopeSheetRowLight:                    list_a
+DopeSheetRowDark:                     list_b
+DopeSheetColLine:                     black
+DopeSheetRowLine:                     black
+DopeSheetViewLock:                    grey(0.5)
+DopeSheetSelection:                   hsv 60 1.0 0.5
+DopeSheetSelectionHover:              hsv 60 0.5 0.9
+DopeSheetSelectionActive:             hsv 60 0.5 0.9
+DopeSheetSelectionInactive:           hsv 60 0.9 0.7
+DopeSheetSelectionInactiveLock:       1 0 1
+DopeSheetSelectionText:               black
+DopeSheetSelectionRemove:             1 0 0
+DopeSheetOverwriteHover:              1 0 0
+DopeSheetOverwriteActive:             0.7 0 0
+DopeSheetOverwriteInactive:           0.9 0 0
+DopeSheetSpreadSheetText:             black
+DopeSheetSpreadSheetDisabled:         0.07 0 0
+DopeSheetRippleTool:                  1 1 0
 
 //
 // Popups
 //
 
-DialogBlendBG:        BG_LO // messages, etc
-InfoBG:               black
-InfoText:             TEXT
-PopupWindowTextColor: white
+DialogBlendBG:                        bg_low // messages, etc
+InfoBG:                               black
+InfoText:                             text
+PopupWindowTextColor:                 white
 
-GalleryBackground:         GREY(0.15)
-SnapshotGalleryBackground: black
+GalleryBackground:                    grey(0.15)
+SnapshotGalleryBackground:            black
 
-SwitchButtonSelected: GREY(0.5)
-SwitchButtonLocated:  GREY(0.2)
+SwitchButtonSelected:                 grey(0.5)
+SwitchButtonLocated:                  grey(0.2)
 
 //
 // Popups - Assets
 //
 
-CreateAssetVersion:            #ffcccc // pink
-CreateAssetScope:              #ccccff // blue
-CreateAssetAuthor:             #ccffff // cyan
-CreateAssetBranch:             #ccffcc // green
-CreateAssetBasename:           #ffffcc // yellow
-AssetBannerBackground:         GREY(0.12)
-AssetUpdateStatusBackground:   0.19 0.28 0.38
-AssetUpdateStatusText:         white
-OrboltSplashscreenProgressbar: 0.19 0.28 0.38
+CreateAssetVersion:                   #ffcccc // pink
+CreateAssetScope:                     #ccccff // blue
+CreateAssetAuthor:                    #ccffff // cyan
+CreateAssetBranch:                    #ccffcc // green
+CreateAssetBasename:                  #ffffcc // yellow
+AssetBannerBackground:                grey(0.12)
+AssetUpdateStatusBackground:          0.19 0.28 0.38
+AssetUpdateStatusText:                white
+OrboltSplashscreenProgressbar:        0.19 0.28 0.38
 
 //
 // Popups - Help
 //
 
-PopupHelpBG:              black
-PopupHelpFG:              TEXT
-PopupHelpHotkeyFG:        SHADOW2
-PopupHelpBackgroundColor: SELECTION_HIGHLIGHT2
-PopupExtraHelpFG:         TEXT
-PopupExtraHelpBG:         HSV 220 0.425 0.4
+PopupHelpBG:                          black
+PopupHelpFG:                          text
+PopupHelpHotkeyFG:                    shadow2
+PopupHelpBackgroundColor:             selection_highlight2
+PopupExtraHelpFG:                     text
+PopupExtraHelpBG:                     hsv 220 0.425 0.4
 
 //
 // Popups - Operator type manager
 //
 
-OTLUnusedColor:    0.70 0.10 0.10
-OTLOutOfDateColor: 0.70 0.70 0.10
-OTLPreferredColor: 0.20 0.70 0.20
+OTLUnusedColor:                       0.70 0.10 0.10
+OTLOutOfDateColor:                    0.70 0.70 0.10
+OTLPreferredColor:                    0.20 0.70 0.20
 
 //
 // Popups - Progress meter
 //
 
-ProgressMeterPercentLabelLeft:  black
-ProgressMeterPercentLabelRight: white
-ProgressMeterTopBorder:         BG_HI
-ProgressMeterBottomBorder:      BG_HI
-ProgressMeterWellGradHi:        WELL
-ProgressMeterWellGradLo:        WELL
-ProgressMeterBevelTop:          white
-ProgressMeterBevelBottom:       SELECTION_SHADOW
-ProgressMeterGradHi:            SELECTION_HIGHLIGHT2
-ProgressMeterGradLo:            SELECTION_BASE
-ProgressMeterText:              TEXT
+ProgressMeterPercentLabelLeft:        black
+ProgressMeterPercentLabelRight:       white
+ProgressMeterTopBorder:               bg_high
+ProgressMeterBottomBorder:            bg_high
+ProgressMeterWellGradHi:              well
+ProgressMeterWellGradLo:              well
+ProgressMeterBevelTop:                white
+ProgressMeterBevelBottom:             selection_shadow
+ProgressMeterGradHi:                  selection_highlight2
+ProgressMeterGradLo:                  selection_base
+ProgressMeterText:                    text
 
 //
 // Scrollbar
 //
 
-ScrollbarUpperBorder:         BG_LO
-ScrollbarBottomBorder:        SEP
-ScrollbarWell:                BG_LO
-ScrollbarWellShadow1:         BG_LO
-ScrollbarWellShadow2:         BG_LO
-ScrollbarWellShadow3:         BG_LO
-ScrollbarWellShadowBlend12:   BG_LO
-ScrollbarWellShadowBlend13:   BG_LO
-ScrollbarWellShadowBlend22:   BG_LO
-ScrollbarWellShadowBlend23:   BG_LO
-ScrollbarWellShadowBlend32:   BG_LO
-ScrollbarWellShadowBlend33:   BG_LO
-ScrollbarThumbTopBorder:      SEP
-ScrollbarThumbBottomBorder:   SEP
-ScrollbarThumbBevel:          SEP
-ScrollbarThumbGrippyBase:     SEL
-ScrollbarThumbGrippyEdge:     SEL
-ScrollbarButtonTopBorder:     SEP
-ScrollbarButtonBottomBorder:  SEP
-ScrollbarButtonBetweenBorder: BG_LO
-ScrollbarButtonBevel:         SEP
-ScrollbarButtonArrow:         arrow
-ScrollArrow:                  BG_LO
-ScrollArrowSelected:          BUTTON_SEL
-ScrollArrowDisabled:          DRKGRADLOW
+ScrollbarUpperBorder:                 bg_low
+ScrollbarBottomBorder:                separator
+ScrollbarWell:                        bg_low
+ScrollbarWellShadow1:                 bg_low
+ScrollbarWellShadow2:                 bg_low
+ScrollbarWellShadow3:                 bg_low
+ScrollbarWellShadowBlend12:           bg_low
+ScrollbarWellShadowBlend13:           bg_low
+ScrollbarWellShadowBlend22:           bg_low
+ScrollbarWellShadowBlend23:           bg_low
+ScrollbarWellShadowBlend32:           bg_low
+ScrollbarWellShadowBlend33:           bg_low
+ScrollbarThumbTopBorder:              separator
+ScrollbarThumbBottomBorder:           separator
+ScrollbarThumbBevel:                  separator
+ScrollbarThumbGrippyBase:             selection
+ScrollbarThumbGrippyEdge:             selection
+ScrollbarButtonTopBorder:             separator
+ScrollbarButtonBottomBorder:          separator
+ScrollbarButtonBetweenBorder:         bg_low
+ScrollbarButtonBevel:                 separator
+ScrollbarButtonArrow:                 arrow
+ScrollArrow:                          bg_low
+ScrollArrowSelected:                  button_selection
+ScrollArrowDisabled:                  dark_grad_low
 
 //
 // Shaded pick box (??)
 //
 
-ShadedPickOutline:   0.6 0.6 0.6
-ShadedPickInnerLine: 0.3 0.3 0.3
-ShadedPickFill:      0.2 0.2 0.2
+ShadedPickOutline:                    0.6 0.6 0.6
+ShadedPickInnerLine:                  0.3 0.3 0.3
+ShadedPickFill:                       0.2 0.2 0.2
 
 //
 // Simulation tree view
 //
 
-SIMAltRepColor:       0.20 0.70 0.20
-SIMObjectColor:       0.00 0.00 0.00
-SIMDataColor:         0.00 0.00 0.00
-SIMRelDataColor:      0.00 0.00 0.00
-SIMRecordColor:       0.00 0.00 0.00
-SIMAffectorsColor:    0.00 0.00 0.00
-SIMGroupsColor:       0.00 0.00 0.00
-SIMEngineColor:       0.00 0.00 0.00
-SIMEngineInterpColor: 0.70 0.70 0.10
-SIMAffectorColor:     0.10 0.10 0.60
-SIMMutualColor:       0.20 0.70 0.20
-SIMAlmostMutualColor: 0.70 0.70 0.10
+SIMAltRepColor:                       0.20 0.70 0.20
+SIMObjectColor:                       0.00 0.00 0.00
+SIMDataColor:                         0.00 0.00 0.00
+SIMRelDataColor:                      0.00 0.00 0.00
+SIMRecordColor:                       0.00 0.00 0.00
+SIMAffectorsColor:                    0.00 0.00 0.00
+SIMGroupsColor:                       0.00 0.00 0.00
+SIMEngineColor:                       0.00 0.00 0.00
+SIMEngineInterpColor:                 0.70 0.70 0.10
+SIMAffectorColor:                     0.10 0.10 0.60
+SIMMutualColor:                       0.20 0.70 0.20
+SIMAlmostMutualColor:                 0.70 0.70 0.10
 
 //
 // Split bar
 //
 
-SplitBarBackground:  SEP
-SplitBarEdgeColor:   SEL   // grabber
-SplitBarLightColor:  BG_LO // also: minimized stowbar line
-SplitBarDarkColor:   SEP   //
-SplitBarPaneOutline: BG_LO // ?
-SplitBarGrippyColor: SEL   // grabber
-SplitBarHighlight:   SEL
+SplitBarBackground:                   separator
+SplitBarEdgeColor:                    selection // grabber
+SplitBarLightColor:                   bg_low    // also: minimized stowbar line
+SplitBarDarkColor:                    separator
+SplitBarPaneOutline:                  bg_low    // ?
+SplitBarGrippyColor:                  selection // grabber
+SplitBarHighlight:                    selection
 // SplitBarBackground + SplitBarHighlight*0.2
-SplitBarHighlight2:  0.432 0.392 0.313
+SplitBarHighlight2:                   0.432 0.392 0.313
 
 //
 // Status bar
 //
 
-StatusBarMessageFG: TEXT
-StatusBarMessageBG: BG_HI
-StatusBarPromptFG:  TEXT
-StatusBarPromptBG:  HSV 40 0.6 0.6
-StatusBarWarningFG: TEXT
-StatusBarWarningBG: HSV 0 0.6 0.5
-StatusBarErrorFG:   TEXT
-StatusBarErrorBG:   HSV 0 1 1
+StatusBarMessageFG:                   text
+StatusBarMessageBG:                   bg_high
+StatusBarPromptFG:                    text
+StatusBarPromptBG:                    hsv 40 0.6 0.6
+StatusBarWarningFG:                   text
+StatusBarWarningBG:                   hsv 0 0.6 0.5
+StatusBarErrorFG:                     text
+StatusBarErrorBG:                     hsv 0 1 1
 
 //
 // Toolbars
 //
 
-ToolbarBevelLight: BG_HI // stowbar toggle borders, line above playbar, line above geo spreadsheet
-ToolbarBevelDark:  GREY(0.2)
-ToolbarFlatGradHi: BG_HI // top/left end of gradient
-ToolbarFlatGradLo: BG_HI // bottom/right end of gradient
+ToolbarBevelLight:                    bg_high // stowbar toggle borders, line above playbar, line above geo spreadsheet
+ToolbarBevelDark:                     grey(0.2)
+ToolbarFlatGradHi:                    bg_high // top/left end of gradient
+ToolbarFlatGradLo:                    bg_high // bottom/right end of gradient
 
 //
 // Tool shelf
 //
 
-ShelfGradHi:         BG_HI
-ShelfGradMidHi:      BG_HI
-ShelfGradMidLow:     BG_HI
-ShelfGradLow:        BG_HI
-ShelfBG:             BG_HI // Does not seem to be used
-ShelfEmptyBG:        BG_HI
-ShelfTabActiveHi:    BG_HI
-ShelfTabActiveLow:   BG_HI
-ShelfTabInactiveHi:  BG_LO
-ShelfTabInactiveLow: BG_LO
+ShelfGradHi:                          bg_high
+ShelfGradMidHi:                       bg_high
+ShelfGradMidLow:                      bg_high
+ShelfGradLow:                         bg_high
+ShelfBG:                              bg_high // Does not seem to be used
+ShelfEmptyBG:                         bg_high
+ShelfTabActiveHi:                     bg_high
+ShelfTabActiveLow:                    bg_high
+ShelfTabInactiveHi:                   bg_low
+ShelfTabInactiveLow:                  bg_low
 
 //
 // Tree
 //
 
-TreeNodeBG:                       LISTA
-TreeNodeAlternateBG:              LISTB
-TreeNodeSelectedBG:               SELECTION_BASE
-TreeNodeSelectedFG:               white
-TreeNodeReservedParmFG:           SHADOW3
-TreeNodeInvisibleParmFG:          TEXT
-TreeNodeInvisibleReservedParmFG:  SHADOW3
-#TreeNodeInvisibleParmFG:         0.70 0.80 0.95
-#TreeNodeInvisibleReservedParmFG: 0.45 0.50 0.58
-TreeLine:                         arrow
+TreeNodeBG:                           list_a
+TreeNodeAlternateBG:                  list_b
+TreeNodeSelectedBG:                   selection_base
+TreeNodeSelectedFG:                   white
+TreeNodeReservedParmFG:               shadow_3
+TreeNodeInvisibleParmFG:              text
+TreeNodeInvisibleReservedParmFG:      shadow_3
+#TreeNodeInvisibleParmFG:             0.70 0.80 0.95
+#TreeNodeInvisibleReservedParmFG:     0.45 0.50 0.58
+TreeLine:                             arrow
 
 //
 // Viewport
 //
 
-ViewportBorder:             red // ??
-ViewportDividers:           BG_HI
-ViewportInspectBox:         GREY(0.8)
-ViewportInspectBorder:      GREY(0.3)
-ViewportInspectText:        black
-ImageViewportBorder:        GREY(0.2)
-ImageViewportBorderCurrent: 0.0 0.6 0.0
+ViewportBorder:                       red // ??
+ViewportDividers:                     bg_high
+ViewportInspectBox:                   grey(0.8)
+ViewportInspectBorder:                grey(0.3)
+ViewportInspectText:                  black
+ImageViewportBorder:                  grey(0.2)
+ImageViewportBorderCurrent:           0.0 0.6 0.0
diff --git a/config/UIDark_unused.inc b/config/UIDark_unused.inc
index 3907518..da867ab 100644
--- a/config/UIDark_unused.inc
+++ b/config/UIDark_unused.inc
@@ -9,255 +9,255 @@
 // Syntax
 //
 
-ParmSyntaxPlainColor:   #bcbec3
-ParmSyntaxStringColor:  #79a978
-ParmSyntaxVarColor:     #c892ca
-ParmSyntaxFuncColor:    #8888c1
-ParmSyntaxKeywordColor: #6799c0
-ParmSyntaxQuoteColor:   #c59172
-ParmSyntaxNumberColor:  #ebb845
-ParmSyntaxRefColor:     #d2cf9c
-ParmSyntaxCommentColor: #7b7e84
-ParmSyntaxErrorColor:   #e14640
-ParmSyntaxTypeColor:    #93d4eb
-ParmSyntaxExtraColor:   #8b588a
-
-ParmParenMatchColor: #FFB41F // Gold
-ParmQuoteMatchColor: #FFB41F // Gold
-ParmMisMatchColor:   #E14640 // Red
-
-PreEditUnderlineColor:      SELECTION_BASE
-TextboxLineNumberHighlight: DRKGRADHIGH
+ParmSyntaxPlainColor:               #bcbec3
+ParmSyntaxStringColor:              #79a978
+ParmSyntaxVarColor:                 #c892ca
+ParmSyntaxFuncColor:                #8888c1
+ParmSyntaxKeywordColor:             #6799c0
+ParmSyntaxQuoteColor:               #c59172
+ParmSyntaxNumberColor:              #ebb845
+ParmSyntaxRefColor:                 #d2cf9c
+ParmSyntaxCommentColor:             #7b7e84
+ParmSyntaxErrorColor:               #e14640
+ParmSyntaxTypeColor:                #93d4eb
+ParmSyntaxExtraColor:               #8b588a
+
+ParmParenMatchColor:                #FFB41F // Gold
+ParmQuoteMatchColor:                #FFB41F // Gold
+ParmMisMatchColor:                  #E14640 // Red
+
+PreEditUnderlineColor:              selection_base
+TextboxLineNumberHighlight:         dark_grad_high
 
 //
 // Parameters
 //
 
-ButtonColor:      DRKGRADHIGH
-ButtonStripColor: UNK
-SliderColor:      GREY(0.65)
-SliderThumbColor: GREY(0.68)
-InputColor:       GREY(0.70)
-RadioColor:       GREY(0.60)
+ButtonColor:                        dark_grad_high
+ButtonStripColor:                   unknown
+SliderColor:                        grey(0.65)
+SliderThumbColor:                   grey(0.68)
+InputColor:                         grey(0.70)
+RadioColor:                         grey(0.60)
 
 //
 // Scene graph panes
 //
 
-UsdLocationHasArcs:           #3E9E2E
-UsdLocationIsInstance:        #87CEFA
-UsdLocationInPrototype:       #7688D9
-UsdLocationUnloaded:          #5E2E15
-UsdLocationLoaded:            #DE9E2E
-UsdLayerMuted:                #9090E0
-UsdLayerHasOpinion:           #E07000
-UsdLayerChildHasOpinion:      #A04000
-UsdLayerModifiedByCurrentLop: #40A000
-
-UsdAttrResolveFallback:    #DE9E2E
-UsdAttrResolveDefault:     #87CEFA
-UsdAttrResolveValueClips:  #E696E6
-UsdAttrResolveTimeSamples: #B1CF99
-UsdAttrResolveNone:        grey50
-UsdRelationship:           #E68484
-UsdComputed:               #8484E6
-
-UsdPrimSelected:           SELECTION_BASE
-UsdPrimSelectedAlpha:      0.4
-UsdChildPrimSelected:      0.44 0.22 0.11
-UsdChildPrimSelectedAlpha: 0.4
-UsdPrimModified:           0.30 0.80 0.80
-UsdPrimModifiedAlpha:      0.4
-UsdChildPrimModified:      0.15 0.40 0.40
-UsdChildPrimModifiedAlpha: 0.4
+UsdLocationHasArcs:                 #3E9E2E
+UsdLocationIsInstance:              #87CEFA
+UsdLocationInPrototype:             #7688D9
+UsdLocationUnloaded:                #5E2E15
+UsdLocationLoaded:                  #DE9E2E
+UsdLayerMuted:                      #9090E0
+UsdLayerHasOpinion:                 #E07000
+UsdLayerChildHasOpinion:            #A04000
+UsdLayerModifiedByCurrentLop:       #40A000
+
+UsdAttrResolveFallback:             #DE9E2E
+UsdAttrResolveDefault:              #87CEFA
+UsdAttrResolveValueClips:           #E696E6
+UsdAttrResolveTimeSamples:          #B1CF99
+UsdAttrResolveNone:                 grey50
+UsdRelationship:                    #E68484
+UsdComputed:                        #8484E6
+
+UsdPrimSelected:                    selection_base
+UsdPrimSelectedAlpha:               0.4
+UsdChildPrimSelected:               0.44 0.22 0.11
+UsdChildPrimSelectedAlpha:          0.4
+UsdPrimModified:                    0.30 0.80 0.80
+UsdPrimModifiedAlpha:               0.4
+UsdChildPrimModified:               0.15 0.40 0.40
+UsdChildPrimModifiedAlpha:          0.4
 
 //
 // Network - Node flags
 //
 
-SelectOnColor:      0.75 0.75 0
-SelectOffColor:     0.56 0.56 0
-DisplayOnColor:     0.3 0.5 1
-DisplayOffColor:    0.2 0.3 0.6
-TemplateOnColor:    1 0.5 1
-TemplateOffColor:   0.75 0.37 0.75
-BypassOnColor:      1 0.5 0
-BypassOffColor:     0.5 0.25 0
-SelectableOnColor:  0.6 0.35 0.2
-SelectableOffColor: 0.4 0.2  0.15
-ExposeOnColor:      1 0 0
-ExposeOffColor:     0.6 0 0
-CurrentColor:       0.25 0.85 0.25
+SelectOnColor:                      0.75 0.75 0
+SelectOffColor:                     0.56 0.56 0
+DisplayOnColor:                     0.3 0.5 1
+DisplayOffColor:                    0.2 0.3 0.6
+TemplateOnColor:                    1 0.5 1
+TemplateOffColor:                   0.75 0.37 0.75
+BypassOnColor:                      1 0.5 0
+BypassOffColor:                     0.5 0.25 0
+SelectableOnColor:                  0.6 0.35 0.2
+SelectableOffColor:                 0.4 0.2  0.15
+ExposeOnColor:                      1 0 0
+ExposeOffColor:                     0.6 0 0
+CurrentColor:                       0.25 0.85 0.25
 
 //
 // Status bar
 //
 
-MessageColor: 0.0 0.0 0.0
-PromptColor:  0.3 0.4 0.9
-WarningColor: 0.85 0.25 0.0
-ErrorColor:   ERR
+MessageColor:                       0.0 0.0 0.0
+PromptColor:                        0.3 0.4 0.9
+WarningColor:                       0.85 0.25 0.0
+ErrorColor:                         error
 
 //
 // Network editor
 //
 
-NodeConnectionDefaultBG:    GREY(0.5)
-NodeConnectionTextBG:       0.415 0.395 0.44
-NodeConnectionGlow:         HSV 40 0.5 1
-NodeConnectionArrowLight:   black
-NodeConnectionArrowDark:    black
-NodeConnectionBevel:        GREY(0.6)
-NodeConnectionTopBorder:    GREY(0.2)
-NodeConnectionBottomBorder: GREY(0.2)
-
-NodeButtonGrad:          GREY(0.5)
-NodeButtonSelectedGrad:  UNK // NodeButtonSelectedGrad does not seem to be used anymore
-NodeButtonBevel:         GREY(0.55)
-NodeButtonBevelSelected: UNK
-NodeSeparator:           GREY(0.2)
-NodeSeparatorEnabled:    GREY(0.33)
-NodeError:               ERR
-NodeWarningBG:           black
-NodeWarningFG:           1.0 0.87 0
-NodeDefaultBG:           DRKBASE
-NodeHighlight:           0 0.68 0.94
-NodeDebugFG:             0.741 0.988 1
-
-NodeTemplateFlag:           #FF66FF
-NodeSelectableTemplateFlag: #CC33CC
-NodeBypassFlag:             1.0 1.0 0
-NodeRenderFlag:             0.666 0.5 1.0
-NodeDisplayFlag:            0 0.4 0.8
-NodeDisplayAndRenderFlag:   0 0.68 0.94
-NodeOutputFlag:             0.75 0.4 0.0
-NodeSelectableFlag:         0.4 0.8 0
-NodeExportFlag:             0.75 0.4 0.0
-NodeHiddenFlag:             0.58 0.55 0.43
-NodeAudioFlag:              0.0 0.5 0.5
-NodeThumbnailFlag:          0.35 0.6 0.2
-NodeLockFlag:               #FF3300
-NodeSoftLockFlag:           #C4E361
-NodeLoadedWithUnloadFlagOn: 1.0 0.0 1.0
-NodeDebugFlag:              0.741 0.988 1
-
-NetworkSelection:          HSV 65 1 0.95
-NetworkCurrent:            HSV 45 1 0.95
-NetworkCurrentNonSelected: GREY(1.0)
-NetworkBackground:         DRKBASE
-NetworkDisplayHighlight:   0.257 0.396 0.521
-NetworkRenderHighlight:    0.375 0.310 0.498
-NetworkOutputHighlight:    0.75 0.4 0.0
-NetworkTemplateHighlight:  #FF66FF
-NetworkLegacyHighlight:    #FF3333
-NetworkOverviewDragger:    white
-NetworkTimeDependent:      0.0 1.0 0.0
-
-NetworkGrid: GREY(0.29)
-
-NetworkWireNormal:                  GREY(.55)
-NetworkWireActive:                  HSV 45 0.6 0.55
-NetworkWireActiveLight:             HSV 45 0.65 0.8
+NodeConnectionDefaultBG:            grey(0.5)
+NodeConnectionTextBG:               0.415 0.395 0.44
+NodeConnectionGlow:                 hsv 40 0.5 1
+NodeConnectionArrowLight:           black
+NodeConnectionArrowDark:            black
+NodeConnectionBevel:                grey(0.6)
+NodeConnectionTopBorder:            grey(0.2)
+NodeConnectionBottomBorder:         grey(0.2)
+
+NodeButtonGrad:                     grey(0.5)
+NodeButtonSelectedGrad:             unknown // NodeButtonSelectedGrad does not seem to be used anymore
+NodeButtonBevel:                    grey(0.55)
+NodeButtonBevelSelected:            unknown
+NodeSeparator:                      grey(0.2)
+NodeSeparatorEnabled:               grey(0.33)
+NodeError:                          error
+NodeWarningBG:                      black
+NodeWarningFG:                      1.0 0.87 0
+NodeDefaultBG:                      dark_base
+NodeHighlight:                      0 0.68 0.94
+NodeDebugFG:                        0.741 0.988 1
+
+NodeTemplateFlag:                   #FF66FF
+NodeSelectableTemplateFlag:         #CC33CC
+NodeBypassFlag:                     1.0 1.0 0
+NodeRenderFlag:                     0.666 0.5 1.0
+NodeDisplayFlag:                    0 0.4 0.8
+NodeDisplayAndRenderFlag:           0 0.68 0.94
+NodeOutputFlag:                     0.75 0.4 0.0
+NodeSelectableFlag:                 0.4 0.8 0
+NodeExportFlag:                     0.75 0.4 0.0
+NodeHiddenFlag:                     0.58 0.55 0.43
+NodeAudioFlag:                      0.0 0.5 0.5
+NodeThumbnailFlag:                  0.35 0.6 0.2
+NodeLockFlag:                       #FF3300
+NodeSoftLockFlag:                   #C4E361
+NodeLoadedWithUnloadFlagOn:         1.0 0.0 1.0
+NodeDebugFlag:                      0.741 0.988 1
+
+NetworkSelection:                   hsv 65 1 0.95
+NetworkCurrent:                     hsv 45 1 0.95
+NetworkCurrentNonSelected:          grey(1.0)
+NetworkBackground:                  dark_base
+NetworkDisplayHighlight:            0.257 0.396 0.521
+NetworkRenderHighlight:             0.375 0.310 0.498
+NetworkOutputHighlight:             0.75 0.4 0.0
+NetworkTemplateHighlight:           #FF66FF
+NetworkLegacyHighlight:             #FF3333
+NetworkOverviewDragger:             white
+NetworkTimeDependent:               0.0 1.0 0.0
+
+NetworkGrid:                        grey(0.29)
+
+NetworkWireNormal:                  grey(.55)
+NetworkWireActive:                  hsv 45 0.6 0.55
+NetworkWireActiveLight:             hsv 45 0.65 0.8
 NetworkWireHighlight:               1.0 1.0 0.0
 NetworkWireShadow:                  black
-NetworkWireExtraNormal:             HSV 160 0.6 0.55
-NetworkWireExtraActive:             HSV 0 0.6 0.55
-NetworkWireExtraActiveLight:        HSV 0 0.65 0.8
-NetworkWireIKNormal:                HSV 240 0.6 0.55
-NetworkWireIKActive:                HSV 240 0.6 0.55
-NetworkWireIKActiveLight:           HSV 240 0.65 0.8
+NetworkWireExtraNormal:             hsv 160 0.6 0.55
+NetworkWireExtraActive:             hsv 0 0.6 0.55
+NetworkWireExtraActiveLight:        hsv 0 0.65 0.8
+NetworkWireIKNormal:                hsv 240 0.6 0.55
+NetworkWireIKActive:                hsv 240 0.6 0.55
+NetworkWireIKActiveLight:           hsv 240 0.65 0.8
 NetworkWireOutputOverrideNormal:    1.0 1.0 1.0
 NetworkWireOutputOverrideHighlight: 1.0 0.784 0.0
 NetworkWireTimeDepNormal:           0.0 1.0 0.0
-NetworkWireLoopBack:                HSV 180 1.0 1.0 1.0
-NetworkWirePassThrough:             HSV 180 1.0 1.0 1.0
+NetworkWireLoopBack:                hsv 180 1.0 1.0 1.0
+NetworkWirePassThrough:             hsv 180 1.0 1.0 1.0
 
 //
 // SHOP viewer
 //
 
-ShopViewTitleColor 1.0 1.0 0.0
+ShopViewTitleColor                  1.0 1.0 0.0
 
 //
 // VOP input/output labels
 //
 
-VopInOutVectorColor:       #60C279
-VopInOutVectorArrayColor:  #448C69
-VopInOutVector2Color:      #27FF00
-VopInOutVector2ArrayColor: #178902
-VopInOutVector4Color:      #C6FF00
-VopInOutVector4ArrayColor: #6F8F00
-VopInOutNormalColor:       #A4A4FF
-VopInOutColorColor:        #FF24FF
-VopInOutFloatColor:        #55D2C5
-VopInOutFloatArrayColor:   #218278
-VopInOutIntColor:          #45B5FF
-VopInOutIntArrayColor:     #21668A
-VopInOutStringColor:       #CCB299
-VopInOutStringArrayColor:  #A97442
-VopInOutMatrix2Color:      #D367FF
-VopInOutMatrix2ArrayColor: #783A91
-VopInOutMatrix3Color:      #B367FF
-VopInOutMatrix3ArrayColor: #6A488C
-VopInOutMatrix4Color:      #7F68FE
-VopInOutMatrix4ArrayColor: #5B5195
-VopInOutPointColor:        #EF99D5
-VopInOutBsdfColor:         #F8E71C
-VopInOutStructColor:       #DE796E
-VopInOutStructArrayColor:  #A45858
-VopInOutMethodColor:       #FF9900
-VopInOutMultiColor:        #E5E5E5
-VopErrorColor:             ERR
-VopInOutDictColor:         #D29628
-VopInOutDictArrayColor:    #B5700A
+VopInOutVectorColor:                #60C279
+VopInOutVectorArrayColor:           #448C69
+VopInOutVector2Color:               #27FF00
+VopInOutVector2ArrayColor:          #178902
+VopInOutVector4Color:               #C6FF00
+VopInOutVector4ArrayColor:          #6F8F00
+VopInOutNormalColor:                #A4A4FF
+VopInOutColorColor:                 #FF24FF
+VopInOutFloatColor:                 #55D2C5
+VopInOutFloatArrayColor:            #218278
+VopInOutIntColor:                   #45B5FF
+VopInOutIntArrayColor:              #21668A
+VopInOutStringColor:                #CCB299
+VopInOutStringArrayColor:           #A97442
+VopInOutMatrix2Color:               #D367FF
+VopInOutMatrix2ArrayColor:          #783A91
+VopInOutMatrix3Color:               #B367FF
+VopInOutMatrix3ArrayColor:          #6A488C
+VopInOutMatrix4Color:               #7F68FE
+VopInOutMatrix4ArrayColor:          #5B5195
+VopInOutPointColor:                 #EF99D5
+VopInOutBsdfColor:                  #F8E71C
+VopInOutStructColor:                #DE796E
+VopInOutStructArrayColor:           #A45858
+VopInOutMethodColor:                #FF9900
+VopInOutMultiColor:                 #E5E5E5
+VopErrorColor:                      error
+VopInOutDictColor:                  #D29628
+VopInOutDictArrayColor:             #B5700A
 
 //
 // COP input/output labels
 //
 
-CopInOutIntColor:      #99DDFF
-CopInOutFloatColor:    #77AADD
-CopInOutVector2Color:  #EE8866
-CopInOutVectorColor:   #44BB99
-CopInOutVector4Color:  #BBCC33
-CopInOutGeometryColor: #FFAABB
-CopInOutMetadataColor: #DDDDDD
-CopInOutUndefColor:    #FFFFFF
+CopInOutIntColor:                   #99DDFF
+CopInOutFloatColor:                 #77AADD
+CopInOutVector2Color:               #EE8866
+CopInOutVectorColor:                #44BB99
+CopInOutVector4Color:               #BBCC33
+CopInOutGeometryColor:              #FFAABB
+CopInOutMetadataColor:              #DDDDDD
+CopInOutUndefColor:                 #FFFFFF
 
 //
 // SHOP input/output labels
 //
 
-ShopInOutSurfaceColor:      #e5b299
-ShopInOutShadowColor:       #33334c
-ShopInOutDisplaceColor:     #99b2e5
-ShopInOutGeometryColor:     #b2e5b2
-ShopInOutLightColor:        #e5e599
-ShopInOutFogColor:          #b2b2b2
-ShopInOutPropertiesColor:   #7fcce5
-ShopInOutShaderColor:       #e5e5e5
-ShopInOutImage3dColor:      #66e5b2
-ShopInOutImage3dArrayColor: #4cb299
+ShopInOutSurfaceColor:              #e5b299
+ShopInOutShadowColor:               #33334c
+ShopInOutDisplaceColor:             #99b2e5
+ShopInOutGeometryColor:             #b2e5b2
+ShopInOutLightColor:                #e5e599
+ShopInOutFogColor:                  #b2b2b2
+ShopInOutPropertiesColor:           #7fcce5
+ShopInOutShaderColor:               #e5e5e5
+ShopInOutImage3dColor:              #66e5b2
+ShopInOutImage3dArrayColor:         #4cb299
 
 //
 // DOP input/output labels
 //
 
-DopInOutObjectColor:  #a5a5a5
-DopInOutDataColor:    #7fcc7f
-DopInOutRelDataColor: #339933
-DopInOutSolverColor:  #b27fe5
-DopInOutAnyColor:     #e5e5e5
+DopInOutObjectColor:                #a5a5a5
+DopInOutDataColor:                  #7fcc7f
+DopInOutRelDataColor:               #339933
+DopInOutSolverColor:                #b27fe5
+DopInOutAnyColor:                   #e5e5e5
 
 //
 // TOP graph nodes
 //
 
-TopInOutColor_file:         #919191
-TopInOutColor_file/image:   #55D2C5
-TopInOutColor_file/geo:     #008FEE
-TopInOutColor_file/csv:     #FF6600
-TopInOutColor_file/movie:   #5AAA00
-TopInOutColor_file/archive: #BEC43F
-TopInOutColor_nonfile:      #D05ADD
+TopInOutColor_file:                 #919191
+TopInOutColor_file/image:           #55D2C5
+TopInOutColor_file/geo:             #008FEE
+TopInOutColor_file/csv:             #FF6600
+TopInOutColor_file/movie:           #5AAA00
+TopInOutColor_file/archive:         #BEC43F
+TopInOutColor_nonfile:              #D05ADD
diff --git a/config/hc_colors.inc b/config/hc_colors.inc
index 2b54268..86532d8 100644
--- a/config/hc_colors.inc
+++ b/config/hc_colors.inc
@@ -2,85 +2,85 @@
 // Basics
 //
 
-#define GREY(g)  g g g

-#define black    GREY(0.0)

-#define white    GREY(1)

-

-#define RED      1 0 0

-#define red      #FF0000

-#define GREEN    0 1 0

-#define BLUE     0 0 1

-#define CYAN     0 1 1

-#define YELLOW   1 1 0

-#define MAGENTA  1 0 1

-#define MY_BLUE  #5555aa

-

-#define PINK     1 0.8 0.8

-#define MINT     0.8 1 0.8

-#define LTBLUE   0.5 0.5 1

-#define LTYELLOW 1 1 0.5

-#define ORANGE   1 0.5 0

-#define BROWN	 #8C6238

+#define grey(g)              g g g

+#define black                grey(0.0)

+#define white                grey(1)

+

+#define red                  #FF0000

+#define green                0 1 0

+#define blue                 0 0 1

+#define cyan                 0 1 1

+#define yellow               1 1 0

+#define magenta              1 0 1

+#define hc_blue              #ffffff

+

+#define pink                 1 0.8 0.8

+#define mint                 0.8 1 0.8

+#define light_blue           0.5 0.5 1

+#define light_yellow         1 1 0.5

+#define orange               1 0.5 0

+#define brown                #8C6238

 
 //
 // New variables
 //
 
-#define BG_HI      #202020

-#define BG_MED     #262626

-#define BG_LO      #1E1E1F

+#define bg_high              #1E2221

+#define bg_medium            #262626

+#define bg_low               #1E1E1F

+#define bg_graph             #1E2221

 
-#define SEL        GREY(0.5)

-#define BORDER     SEL

-#define DISABLED   GREY(0.2)

+#define selection            #bbbbff

+#define border               #609090

+#define disabled             grey(0.2)

 
-#define BUTTON     #404040

+#define button               #404040

 
-#define BEVEL_HI   GREY(0.52)

-#define BEVEL_LO   black

+#define bevel_high           grey(0.52)

+#define bevel_low            black

 
-#define SEP        #363738

-#define ERR        1 0 0

+#define separator            #363738

+#define error                1 0 0

 
-#define TEXT       #ACDAD5

-#define TEXT_DIM   GREY(0.5)

+#define text                 #ACDAD5

+#define text_dim             grey(0.5)

 
 //
 // Old variables
 //
 
-#define DRKBASE              GREY(0.179) // Textbox line number bg

-#define DRKGRADHIGH          GREY(0.1)

-#define DRKGRADLOW           #1F1F1F

-#define WELL                 GREY(0.15)

-#define LISTA                DRKBASE

-#define LISTB                DRKGRADLOW

-#define TOOLBAR              #1A0F00

+#define dark_base            grey(0.179) // Textbox line number bg

+#define dark_grad_high       grey(0.1)

+#define dark_grad_low        #1F1F1F

+#define well                 grey(0.15)

+#define list_a               DRKBASE

+#define list_b               DRKGRADLOW

+#define toolbar              #1A0F00

 
-#define UNK                  1 0 1

+#define unknown              1 0 1

 
-#define DARK                 GREY(0.2)

-#define arrow                GREY(0.5)

+#define dark                 grey(0.2)

+#define arrow                grey(0.5)

 
-#define SHADOW1_5            GREY(0.699)

-#define SHADOW2              GREY(0.63)

-#define SHADOW3              GREY(0.58)

+#define shadow1_5            grey(0.699)

+#define shadow2              grey(0.63)

+#define shadow3              grey(0.58)

 
-#define PRESSED_HIGH         #4A5E73

-#define PRESSED_LOW          #768EA7

+#define pressed_high         #4A5E73

+#define pressed_low          #768EA7

 
-#define SELECTION_BASE       #FF9600

-#define SELECTION_HIGHLIGHT2 1 0.9 0.5

-#define SELECTION_SHADOW     1 0.4 0

+#define selection_base       #FF9600

+#define selection_highlight2 1 0.9 0.5

+#define slection_shadow      1 0.4 0

 
-#define BUTTON_SEL           SELECTION_BASE

-#define BUTTON_PRESS         SELECTION_BASE

-#define BASE_ALT             GREY(0.151) // effect in spreadsheet

+#define button_selection     selection_base

+#define button_press         selection_base

+#define base_alt             grey(0.151) // effect in spreadsheet

 
-#define EMPTY                DRKBASE

+#define empty                dark_base

 
-#define TEXT_HIGHLIGHT       GREY(0.9)

+#define text_highlight       grey(0.9)

 
-#define EDIT_BG              GREY(0.075) // Textbox bg

-#define EDIT_BG_HIGHLIGHT    GREY(0.18)  // Textbox border

-#define EDIT_BG_OUTLINE      GREY(0.14)  // Textbox border

+#define edit_bg              grey(0.075) // Textbox bg

+#define edit_bg_highlight    grey(0.18)  // Textbox border

+#define edit_bg_outline      grey(0.14)  // Textbox border

diff --git a/desktop/hc_desktop.desk b/desktop/hc_desktop.desk
index 32ec1f1..9a3bbae 100644
--- a/desktop/hc_desktop.desk
+++ b/desktop/hc_desktop.desk
@@ -4,46 +4,46 @@ playbar      -1
 shelf        0
 menubar      -1
 statusbar    -1
-radial menu set hc_viewer_radial_menu
+radial menu set sculpt
 root {
-    split 0.578288 H {
+    split 0.621347 H {
         split 0.274328 V R {
             tabs 0 0 {
-                pane panetab0 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m sceneview
+                pane panetab0 -a 1 -l 10 -H /obj/geo1/ -T SOP -m sceneview
                 pane panetab1 -a 1 -l 10 -H /img/ -T IMG -m imageview
-                pane panetab2 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m details
+                pane panetab2 -a 1 -l 10 -H /obj/geo1/ -T SOP -m details
             }
             tabs 0 0 {
-                pane panetab3 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m details
+                pane panetab3 -a 1 -l 10 -H /obj/geo1/ -T SOP -m details
             }
         }
         split 0.586191 V {
             tabs 0 0 {
-                pane panetab4 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m parmeditor
+                pane panetab4 -a 1 -l 10 -H /obj/geo1/ -T SOP -m parmeditor
                 pane panetab5 -a 0 -l 0 -H /obj/ -T OBJ -m python
             }
             tabs 0 0 {
-                pane panetab6 -a 0 -l 0 -H /obj/curve_tests/ -T SOP -m neteditor
-                pane panetab7 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m details
-                pane panetab8 -a 1 -l 10 -H /obj/curve_tests/ -T SOP -m pythonpanel
+                pane panetab6 -a 0 -l 0 -H /obj/geo1/ -T SOP -m neteditor
+                pane panetab7 -a 1 -l 10 -H /obj/geo1/ -T SOP -m details
+                pane panetab8 -a 1 -l 10 -H /obj/geo1/ -T SOP -m pythonpanel
             }
         }
     }
 }
 shelfdock -o 0 -l text -G 0.50 add my_shelf_set
 viewerstow -x stow -b stow -l stow -m hide -c hide -d stow ${DESKNAME}.panetab0.world
-vieweroption -a 0 ${DESKNAME}.panetab0.world
+vieweroption -a 2 ${DESKNAME}.panetab0.world
 viewlayout -s 2 ${DESKNAME}.panetab0.world
 viewtype -t ortho_right ${DESKNAME}.panetab0.world.`vpname("${DESKNAME}.panetab0.world",4)`
 viewtype -t ortho_front ${DESKNAME}.panetab0.world.`vpname("${DESKNAME}.panetab0.world",3)`
 viewtype -t ortho_top ${DESKNAME}.panetab0.world.`vpname("${DESKNAME}.panetab0.world",1)`
-viewtype -t perspective ${DESKNAME}.panetab0.world.`vpname("${DESKNAME}.panetab0.world",2)`
+viewtype -t ortho_front ${DESKNAME}.panetab0.world.`vpname("${DESKNAME}.panetab0.world",2)`
 geospreadsheet -c 0 -l horizontal -s 0.5 -m none -f 0 panetab2
 scenegraphtree -S 0.25 -m 2 -p "/collections /lights" -c  -i  -o  -x 1 -s 1 -M 0 -C primtype,childcount,kind,populated,loaded,activation,visibility,solo,selectability  panetab2
 geospreadsheet -c 0 -l horizontal -s 0.5 -m none -f 0 panetab3
 scenegraphtree -S 0.25 -m 2 -p "/collections /lights" -c  -i  -o  -x 1 -s 1 -M 0 -C primtype,childcount,kind,populated,loaded,activation,visibility,solo,selectability  panetab3
 parmeditor -T 0.25 -w 0 panetab4
-networkeditor -p '{\n	"backgroundimagebrightness":"1.0",\n	"gridmode":"1",\n	"showcopsmenu":"1",\n	"taskgraphcollapsemode":"Off",\n	"showtasksmenu":"1",\n	"useworkitemcolorattribute":"0",\n	"typesidebarsplit":"0.25",\n	"showmenu":"0",\n	"gridxstep":"2.0",\n	"treesplit":"0.25",\n	"showparmdialogmax":"1",\n	"perfstatname":"Time",\n	"palettemode":"0",\n	"taskgraphsortdirection":"0",\n	"showchilddep":"1",\n	"backgroundimageediting":"0",\n	"showtaskgraphperf":"0",\n	"showgrouplist":"0",\n	"showperfstats":"1",\n	"showparmdialog":"0",\n	"overviewmode":"2",\n	"showdep":"0",\n	"palettecolors":"",\n	"showspareinputdep":"1",\n	"workitemcolorattribute":"",\n	"palettesize":"345 345",\n	"showtypesidebar":"0",\n	"showtree":"0",\n	"overviewbounds":"0.000000 0.000000 482.100000 365.400000",\n	"taskgraphperfstatname":"Cook Time",\n	"gridystep":"1.0",\n	"taskgraphsortcriteria":"Automatic",\n	"workitemattrtocollapseby":"",\n	"grouplistsplit":"0.75"\n}\n' panetab6
+networkeditor -p '{\n	"backgroundimagebrightness":"1.0",\n	"gridmode":"1",\n	"showcopsmenu":"1",\n	"taskgraphcollapsemode":"Off",\n	"showtasksmenu":"1",\n	"useworkitemcolorattribute":"0",\n	"typesidebarsplit":"0.25",\n	"showmenu":"0",\n	"gridxstep":"2.0",\n	"treesplit":"0.25",\n	"showparmdialogmax":"1",\n	"perfstatname":"Time",\n	"palettemode":"0",\n	"taskgraphsortdirection":"0",\n	"showchilddep":"1",\n	"backgroundimageediting":"0",\n	"showtaskgraphperf":"0",\n	"showgrouplist":"0",\n	"showperfstats":"1",\n	"showparmdialog":"0",\n	"overviewmode":"2",\n	"showdep":"0",\n	"palettecolors":"",\n	"showspareinputdep":"1",\n	"workitemcolorattribute":"",\n	"palettesize":"345 345",\n	"showtypesidebar":"0",\n	"showtree":"0",\n	"overviewbounds":"0.000000 0.000000 435.000000 358.200000",\n	"taskgraphperfstatname":"Cook Time",\n	"gridystep":"1.0",\n	"taskgraphsortcriteria":"Automatic",\n	"workitemattrtocollapseby":"",\n	"grouplistsplit":"0.75"\n}\n' panetab6
 netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab6
 netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab6
 netcolumns -c delscript,comment -n CHOPNET panetab6
diff --git a/houdini-studio-utils.json b/houdini-studio-utils.json
index 6d08630..159f4c7 100755
--- a/houdini-studio-utils.json
+++ b/houdini-studio-utils.json
@@ -1,3 +1,8 @@
 {
-    "hpath": "~/src/houdini-studio-utils"

-}
\ No newline at end of file
+    "hpath": [

+        "~/src/houdini-studio-utils"

+    ],

+    "env": [

+        "

+    [

+}

diff --git a/otls/sop_lsgalante.im_arrow.1.0.hdalc b/otls/sop_lsgalante.im_arrow.1.0.hdalc
index 1f71d91..1465ed4 100644
Binary files a/otls/sop_lsgalante.im_arrow.1.0.hdalc and b/otls/sop_lsgalante.im_arrow.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_attractor.1.1.hdalc b/otls/sop_lsgalante.im_attractor.1.1.hdalc
index 241cb7c..22ac810 100644
Binary files a/otls/sop_lsgalante.im_attractor.1.1.hdalc and b/otls/sop_lsgalante.im_attractor.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.im_attribute_adjust.1.0.hdalc b/otls/sop_lsgalante.im_attribute_adjust.1.0.hdalc
index 46007d5..a318e0a 100644
Binary files a/otls/sop_lsgalante.im_attribute_adjust.1.0.hdalc and b/otls/sop_lsgalante.im_attribute_adjust.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_bend.1.0.hdalc b/otls/sop_lsgalante.im_bend.1.0.hdalc
index 1f47180..68a963c 100644
Binary files a/otls/sop_lsgalante.im_bend.1.0.hdalc and b/otls/sop_lsgalante.im_bend.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_blaster.1.0.hdalc b/otls/sop_lsgalante.im_blaster.1.0.hdalc
index 9152275..e64167c 100644
Binary files a/otls/sop_lsgalante.im_blaster.1.0.hdalc and b/otls/sop_lsgalante.im_blaster.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_clip.1.0.hdalc b/otls/sop_lsgalante.im_clip.1.0.hdalc
index 951c987..cc20361 100644
Binary files a/otls/sop_lsgalante.im_clip.1.0.hdalc and b/otls/sop_lsgalante.im_clip.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_color.1.0.hdalc b/otls/sop_lsgalante.im_color.1.0.hdalc
index f536bfb..a57c36b 100644
Binary files a/otls/sop_lsgalante.im_color.1.0.hdalc and b/otls/sop_lsgalante.im_color.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_connectivity.1.0.hdalc b/otls/sop_lsgalante.im_connectivity.1.0.hdalc
index 984d004..eebf149 100644
Binary files a/otls/sop_lsgalante.im_connectivity.1.0.hdalc and b/otls/sop_lsgalante.im_connectivity.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_constant.1.0.hdalc b/otls/sop_lsgalante.im_constant.1.0.hdalc
index 914a4bb..8e54f0e 100644
Binary files a/otls/sop_lsgalante.im_constant.1.0.hdalc and b/otls/sop_lsgalante.im_constant.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_copy.1.0.hdalc b/otls/sop_lsgalante.im_copy.1.0.hdalc
index 0c537a9..9a69a3b 100644
Binary files a/otls/sop_lsgalante.im_copy.1.0.hdalc and b/otls/sop_lsgalante.im_copy.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_curl.1.2.hdalc b/otls/sop_lsgalante.im_curl.1.2.hdalc
index 928b92f..5cea3a5 100644
Binary files a/otls/sop_lsgalante.im_curl.1.2.hdalc and b/otls/sop_lsgalante.im_curl.1.2.hdalc differ
diff --git a/otls/sop_lsgalante.im_diagnostic.1.0.hdalc b/otls/sop_lsgalante.im_diagnostic.1.0.hdalc
index 930d2cb..11581fc 100644
Binary files a/otls/sop_lsgalante.im_diagnostic.1.0.hdalc and b/otls/sop_lsgalante.im_diagnostic.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_direction.1.0.hdalc b/otls/sop_lsgalante.im_direction.1.0.hdalc
index a05652f..6507896 100644
Binary files a/otls/sop_lsgalante.im_direction.1.0.hdalc and b/otls/sop_lsgalante.im_direction.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_dissolve.1.0.hdalc b/otls/sop_lsgalante.im_dissolve.1.0.hdalc
index a6d0b4e..3ce2261 100644
Binary files a/otls/sop_lsgalante.im_dissolve.1.0.hdalc and b/otls/sop_lsgalante.im_dissolve.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_dissolve_point.1.0.hdalc b/otls/sop_lsgalante.im_dissolve_point.1.0.hdalc
index 1c94c60..b1247df 100644
Binary files a/otls/sop_lsgalante.im_dissolve_point.1.0.hdalc and b/otls/sop_lsgalante.im_dissolve_point.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_distance.1.0.hdalc b/otls/sop_lsgalante.im_distance.1.0.hdalc
index 14245c5..8f988e8 100644
Binary files a/otls/sop_lsgalante.im_distance.1.0.hdalc and b/otls/sop_lsgalante.im_distance.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_distrubution.1.0.hdalc b/otls/sop_lsgalante.im_distrubution.1.0.hdalc
index ac0fe0a..073b146 100644
Binary files a/otls/sop_lsgalante.im_distrubution.1.0.hdalc and b/otls/sop_lsgalante.im_distrubution.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_dot.1.0.hdalc b/otls/sop_lsgalante.im_dot.1.0.hdalc
index a86ff32..8640f19 100644
Binary files a/otls/sop_lsgalante.im_dot.1.0.hdalc and b/otls/sop_lsgalante.im_dot.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_evaluate_curve.1.0.hdalc b/otls/sop_lsgalante.im_evaluate_curve.1.0.hdalc
index f4cac6e..e405831 100644
Binary files a/otls/sop_lsgalante.im_evaluate_curve.1.0.hdalc and b/otls/sop_lsgalante.im_evaluate_curve.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_extrude.1.0.hdalc b/otls/sop_lsgalante.im_extrude.1.0.hdalc
index fb37082..8e8883d 100644
Binary files a/otls/sop_lsgalante.im_extrude.1.0.hdalc and b/otls/sop_lsgalante.im_extrude.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_fast_clip.1.0.hdalc b/otls/sop_lsgalante.im_fast_clip.1.0.hdalc
index f95cbc9..b9c24d4 100644
Binary files a/otls/sop_lsgalante.im_fast_clip.1.0.hdalc and b/otls/sop_lsgalante.im_fast_clip.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_float_ramp.1.0.hdalc b/otls/sop_lsgalante.im_float_ramp.1.0.hdalc
index 443a282..26cbc04 100644
Binary files a/otls/sop_lsgalante.im_float_ramp.1.0.hdalc and b/otls/sop_lsgalante.im_float_ramp.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_gate.1.0.hdalc b/otls/sop_lsgalante.im_gate.1.0.hdalc
index 50cf999..ee8db6f 100644
Binary files a/otls/sop_lsgalante.im_gate.1.0.hdalc and b/otls/sop_lsgalante.im_gate.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_gem.1.0.hdalc b/otls/sop_lsgalante.im_gem.1.0.hdalc
index 73cdb8e..8f752ad 100644
Binary files a/otls/sop_lsgalante.im_gem.1.0.hdalc and b/otls/sop_lsgalante.im_gem.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_group.1.0.hdalc b/otls/sop_lsgalante.im_group.1.0.hdalc
index 1b046cf..07bb75e 100644
Binary files a/otls/sop_lsgalante.im_group.1.0.hdalc and b/otls/sop_lsgalante.im_group.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_group_split.1.0.hdalc b/otls/sop_lsgalante.im_group_split.1.0.hdalc
index 9e1e262..4cb9485 100644
Binary files a/otls/sop_lsgalante.im_group_split.1.0.hdalc and b/otls/sop_lsgalante.im_group_split.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_manipulator.1.0.hdalc b/otls/sop_lsgalante.im_manipulator.1.0.hdalc
index 5b9d646..01d1059 100644
Binary files a/otls/sop_lsgalante.im_manipulator.1.0.hdalc and b/otls/sop_lsgalante.im_manipulator.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_matcap.1.0.hdalc b/otls/sop_lsgalante.im_matcap.1.0.hdalc
index 684382c..8956f7d 100644
Binary files a/otls/sop_lsgalante.im_matcap.1.0.hdalc and b/otls/sop_lsgalante.im_matcap.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_membership.1.0.hdalc b/otls/sop_lsgalante.im_membership.1.0.hdalc
index fcbb623..cc72981 100644
Binary files a/otls/sop_lsgalante.im_membership.1.0.hdalc and b/otls/sop_lsgalante.im_membership.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_neighbours.1.0.hdalc b/otls/sop_lsgalante.im_neighbours.1.0.hdalc
index 423bc4e..a4710fa 100644
Binary files a/otls/sop_lsgalante.im_neighbours.1.0.hdalc and b/otls/sop_lsgalante.im_neighbours.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_notebook.1.0.hdalc b/otls/sop_lsgalante.im_notebook.1.0.hdalc
index 0c81a93..9287ca3 100644
Binary files a/otls/sop_lsgalante.im_notebook.1.0.hdalc and b/otls/sop_lsgalante.im_notebook.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_number_generator.1.0.hdalc b/otls/sop_lsgalante.im_number_generator.1.0.hdalc
index cd6c69d..c129a14 100644
Binary files a/otls/sop_lsgalante.im_number_generator.1.0.hdalc and b/otls/sop_lsgalante.im_number_generator.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_onion.1.0.hdalc b/otls/sop_lsgalante.im_onion.1.0.hdalc
index debe0db..24990e6 100644
Binary files a/otls/sop_lsgalante.im_onion.1.0.hdalc and b/otls/sop_lsgalante.im_onion.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_orient.1.1.hdalc b/otls/sop_lsgalante.im_orient.1.1.hdalc
index 1ec769f..74462fb 100644
Binary files a/otls/sop_lsgalante.im_orient.1.1.hdalc and b/otls/sop_lsgalante.im_orient.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.im_permutate.1.0.hdalc b/otls/sop_lsgalante.im_permutate.1.0.hdalc
index b0879e5..ea9a1a6 100644
Binary files a/otls/sop_lsgalante.im_permutate.1.0.hdalc and b/otls/sop_lsgalante.im_permutate.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_plane.1.0.hdalc b/otls/sop_lsgalante.im_plane.1.0.hdalc
index 0c4fe5a..db18138 100644
Binary files a/otls/sop_lsgalante.im_plane.1.0.hdalc and b/otls/sop_lsgalante.im_plane.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_point.1.0.hdalc b/otls/sop_lsgalante.im_point.1.0.hdalc
index 83e092d..450cd7b 100644
Binary files a/otls/sop_lsgalante.im_point.1.0.hdalc and b/otls/sop_lsgalante.im_point.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_point_mover.1.0.hdalc b/otls/sop_lsgalante.im_point_mover.1.0.hdalc
index cc347fc..f5de87d 100644
Binary files a/otls/sop_lsgalante.im_point_mover.1.0.hdalc and b/otls/sop_lsgalante.im_point_mover.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_point_proximity.1.0.hdalc b/otls/sop_lsgalante.im_point_proximity.1.0.hdalc
index dc534f8..3ac4151 100644
Binary files a/otls/sop_lsgalante.im_point_proximity.1.0.hdalc and b/otls/sop_lsgalante.im_point_proximity.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_prim_distance.1.0.hdalc b/otls/sop_lsgalante.im_prim_distance.1.0.hdalc
index 1b9a91c..f002c92 100644
Binary files a/otls/sop_lsgalante.im_prim_distance.1.0.hdalc and b/otls/sop_lsgalante.im_prim_distance.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_prim_proximity.1.0.hdalc b/otls/sop_lsgalante.im_prim_proximity.1.0.hdalc
index 2c4c761..1a4a4fc 100644
Binary files a/otls/sop_lsgalante.im_prim_proximity.1.0.hdalc and b/otls/sop_lsgalante.im_prim_proximity.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_promote.1.0.hdalc b/otls/sop_lsgalante.im_promote.1.0.hdalc
index 8b54041..94715d0 100644
Binary files a/otls/sop_lsgalante.im_promote.1.0.hdalc and b/otls/sop_lsgalante.im_promote.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_ramp_float.1.0.hdalc b/otls/sop_lsgalante.im_ramp_float.1.0.hdalc
index 249560b..a8838a1 100644
Binary files a/otls/sop_lsgalante.im_ramp_float.1.0.hdalc and b/otls/sop_lsgalante.im_ramp_float.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_random_walk.1.0.hdalc b/otls/sop_lsgalante.im_random_walk.1.0.hdalc
index 4afaf8d..5d6092c 100644
Binary files a/otls/sop_lsgalante.im_random_walk.1.0.hdalc and b/otls/sop_lsgalante.im_random_walk.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_reindex.1.0.hdalc b/otls/sop_lsgalante.im_reindex.1.0.hdalc
index f128f93..5757f7c 100644
Binary files a/otls/sop_lsgalante.im_reindex.1.0.hdalc and b/otls/sop_lsgalante.im_reindex.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_relax.1.0.hdalc b/otls/sop_lsgalante.im_relax.1.0.hdalc
index aac349e..eb88328 100644
Binary files a/otls/sop_lsgalante.im_relax.1.0.hdalc and b/otls/sop_lsgalante.im_relax.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_remesh.1.0.hdalc b/otls/sop_lsgalante.im_remesh.1.0.hdalc
index 8c43904..954e14f 100644
Binary files a/otls/sop_lsgalante.im_remesh.1.0.hdalc and b/otls/sop_lsgalante.im_remesh.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_sample.1.0.hdalc b/otls/sop_lsgalante.im_sample.1.0.hdalc
index 48f1367..ac4a08c 100644
Binary files a/otls/sop_lsgalante.im_sample.1.0.hdalc and b/otls/sop_lsgalante.im_sample.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_select.2.0.hdalc b/otls/sop_lsgalante.im_select.2.0.hdalc
index c2ee931..894eb22 100644
Binary files a/otls/sop_lsgalante.im_select.2.0.hdalc and b/otls/sop_lsgalante.im_select.2.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_sharpen.1.0.hdalc b/otls/sop_lsgalante.im_sharpen.1.0.hdalc
index e60901c..8a98fb2 100644
Binary files a/otls/sop_lsgalante.im_sharpen.1.0.hdalc and b/otls/sop_lsgalante.im_sharpen.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_shortest_path.1.0.hdalc b/otls/sop_lsgalante.im_shortest_path.1.0.hdalc
index e76c0f7..43ee4f2 100644
Binary files a/otls/sop_lsgalante.im_shortest_path.1.0.hdalc and b/otls/sop_lsgalante.im_shortest_path.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_shrink.1.1.hdalc b/otls/sop_lsgalante.im_shrink.1.1.hdalc
index 28e2582..ffe5460 100644
Binary files a/otls/sop_lsgalante.im_shrink.1.1.hdalc and b/otls/sop_lsgalante.im_shrink.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.im_skeletonize.1.0.hdalc b/otls/sop_lsgalante.im_skeletonize.1.0.hdalc
index b507a3a..4875c5d 100644
Binary files a/otls/sop_lsgalante.im_skeletonize.1.0.hdalc and b/otls/sop_lsgalante.im_skeletonize.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_soft_transform.1.0.hdalc b/otls/sop_lsgalante.im_soft_transform.1.0.hdalc
new file mode 100644
index 0000000..1bfae4e
Binary files /dev/null and b/otls/sop_lsgalante.im_soft_transform.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_sort.1.1.hdalc b/otls/sop_lsgalante.im_sort.1.1.hdalc
index 9c1a209..f456a53 100644
Binary files a/otls/sop_lsgalante.im_sort.1.1.hdalc and b/otls/sop_lsgalante.im_sort.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.im_special_square.1.0.hdalc b/otls/sop_lsgalante.im_special_square.1.0.hdalc
index b63f5aa..7433cb3 100644
Binary files a/otls/sop_lsgalante.im_special_square.1.0.hdalc and b/otls/sop_lsgalante.im_special_square.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_square.1.0.hdalc b/otls/sop_lsgalante.im_square.1.0.hdalc
index 749e204..adb265a 100644
Binary files a/otls/sop_lsgalante.im_square.1.0.hdalc and b/otls/sop_lsgalante.im_square.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_star.1.0.hdalc b/otls/sop_lsgalante.im_star.1.0.hdalc
index bc6fd61..232faf6 100644
Binary files a/otls/sop_lsgalante.im_star.1.0.hdalc and b/otls/sop_lsgalante.im_star.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_transfer.1.1.hdalc b/otls/sop_lsgalante.im_transfer.1.1.hdalc
index 7747697..8a0cdc8 100644
Binary files a/otls/sop_lsgalante.im_transfer.1.1.hdalc and b/otls/sop_lsgalante.im_transfer.1.1.hdalc differ
diff --git a/otls/sop_lsgalante.im_transform.1.0.hdalc b/otls/sop_lsgalante.im_transform.1.0.hdalc
index c60fc0e..fb5c2eb 100644
Binary files a/otls/sop_lsgalante.im_transform.1.0.hdalc and b/otls/sop_lsgalante.im_transform.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_triangle.1.0.hdalc b/otls/sop_lsgalante.im_triangle.1.0.hdalc
index eae04de..bb6bebc 100644
Binary files a/otls/sop_lsgalante.im_triangle.1.0.hdalc and b/otls/sop_lsgalante.im_triangle.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_twist.1.0.hdalc b/otls/sop_lsgalante.im_twist.1.0.hdalc
index 2f80140..e127b21 100644
Binary files a/otls/sop_lsgalante.im_twist.1.0.hdalc and b/otls/sop_lsgalante.im_twist.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_valence.1.0.hdalc b/otls/sop_lsgalante.im_valence.1.0.hdalc
index 0c930e6..5454db7 100644
Binary files a/otls/sop_lsgalante.im_valence.1.0.hdalc and b/otls/sop_lsgalante.im_valence.1.0.hdalc differ
diff --git a/otls/sop_lsgalante.im_wave.1.0.hdalc b/otls/sop_lsgalante.im_wave.1.0.hdalc
index e1fe568..9bac4f2 100644
Binary files a/otls/sop_lsgalante.im_wave.1.0.hdalc and b/otls/sop_lsgalante.im_wave.1.0.hdalc differ
diff --git a/python3.11libs/hc/bindings.py b/python3.11libs/hc/bindings.py
deleted file mode 100644
index 03c5512..0000000
--- a/python3.11libs/hc/bindings.py
+++ /dev/null
@@ -1,308 +0,0 @@
-import hou, platform
-
-# KEY NAMES
-# uparrow, downarrow, leftarrow, rightarrow
-# alt, cmd, shift, ctrl, tab, del, backspace, enter, esc
-# f1...f12
-# pageup, pagedown, end, home, insert
-# /, \\
-# pad0...pad9
-# padstar, padslash
-# pause
-# space
-
-class Bindings:
-    def __init__(self):
-        return
-
-    def load(self):
-        self.clearAssignments()
-        self.addAssignments()
-
-    def clearAssignments(self):
-        assignments = (
-            #
-            # deskmgr
-            #
-            'deskmgr.new',
-            'deskmgr.save',
-            #
-            # h
-            #
-            'h.add_key',
-            'h.aliases',
-            'h.audio_panel',
-            'h.auto_key',
-            'h.cache_manager',
-            'h.channeleditor',
-            'h.clear_cop_caches',
-            'h.comp_project_manager',
-            'h.context_help',
-            'h.desktop_mgr',
-            'h.find',
-            'h.global_animation_options',
-            'h.mat_palette',
-            'h.merge',
-            'h.new',
-            'h.next_key',
-            'h.open',
-            'h.perf_monitor',
-            'h.python_shell',
-            'h.textport',
-            #
-            # h.pane
-            #
-            'h.pane.clone',
-            'h.pane.closetab',
-            'h.pane.copytab',
-            'h.pane.edit_bookmark',
-            'h.pane.editpathastext',
-            'h.pane.link_minus',
-            'h.pane.link_plus',
-            'h.pane.nexttab',
-            'h.pane.prevtab',
-            'h.pane.to_cop_view',
-            'h.pane.to_chanedit',
-            'h.pane.to_chop_view',
-            'h.pane.to_geosheet',
-            'h.pane.to_ipr_viewer',
-            'h.pane.to_mat_palette',
-            'h.pane.to_net',
-            'h.pane.to_old_net',
-            'h.pane.to_parm',
-            'h.pane.to_scene_view',
-            'h.pane.to_textport',
-            'h.pane.to_treeview',
-            #
-            # h.pane.bundle
-            #
-            'h.pane.bundle.addbundle',
-            'h.pane.bundle.duplicate',
-            #
-            # h.pane.chedit
-            #
-            'h.pane.chedit.bsave',
-            'h.pane.chedit.load',
-            'h.pane.chedit.save',
-            'h.pane.chedit.scroll_to_current_frame',
-            'h.pane.chedit.show_groups',
-            'h.pane.chedit.show_layers',
-            'h.pane.chedit.show_parmbox',
-            #
-            # h.pane.chlist
-            #
-            'h.pane.chlist.parmbox.show_filter',
-            #
-            # h.pane.group
-            #
-            'h.pane.group.addgroup',
-            'h.pane.group.equals',
-            'h.pane.group.minus',
-            'h.pane.group.selectall',
-            'h.pane.group.selectnone',
-            'h.pane.group.togpin',
-            'h.pane.group.togpinall',
-            #
-            # h.pane.gview
-            #
-            'h.pane.gview.increase_subd',
-            'h.pane.gview.decrease_subd',
-            'h.pane.gview.delete',
-            'h.pane.gview.dockhudhandles',
-            'h.pane.gview.edit_snap_options',
-            'h.pane.gview.operator_menu_branch',
-            'h.pane.gview.state.view.home_selection',
-            'h.pane.gview.repeat_current',
-            'h.pane.gview.repeat_current_branch',
-            'h.pane.gview.restore_prevcam',
-            'h.pane.gview.selectstylebox',
-            'h.pane.gview.selectstylebrush',
-            'h.pane.gview.selectstylelaser',
-            'h.pane.gview.selectstylelasso',
-            #
-            # h.pane.gview.handle
-            #
-            'h.pane.gview.handle.remove_keyframe',
-            'h.pane.gview.handle.set_keyframe',
-            #
-            # h.pane.gview.handle.agentcollisionlayer
-            #
-            'h.pane.gview.handle.agentcollisionlayer.boxhandle',
-            'h.pane.gview.handle.agentcollisionlayer.orientationhandle',
-            #
-            # h.pane.gview.handle.agentconfigurejoints
-            #
-            'h.pane.gview.handle.agentconfigurejoints.conehandle',
-            'h.pane.gview.handle.agentconfigurejoints.childrotationhandle',
-            #
-            # h.pane.gview.state
-            #
-            'h.pane.gview.state.volatile_chmodify',
-            #
-            # h.pane.wsheet
-            #
-            'h.pane.wsheet.change_wire_style',
-            'h.pane.wsheet.add_image',
-            'h.pane.wsheet.add_postit',
-            'h.pane.wsheet.addfileop',
-            'h.pane.wsheet.allowdroponwire',
-            'h.pane.wsheet.batch_rename',
-            'h.pane.wsheet.bypass_mode',
-            'h.pane.wsheet.color_palette',
-            'h.pane.wsheet.doautomovenodes',
-            'h.pane.wsheet.dosnapping',
-            'h.pane.wsheet.expose',
-            'h.pane.wsheet.flag1_mode',
-            'h.pane.wsheet.flag2_mode',
-            'h.pane.wsheet.flag3_mode',
-            'h.pane.wsheet.flag4_mode',
-            'h.pane.wsheet.home',
-            'h.pane.wsheet.home_selected',
-            'h.pane.wsheet.up',
-            'h.pane.wsheet.down',
-            'h.pane.wsheet.left',
-            'h.pane.wsheet.right',
-            'h.pane.wsheet.edit_images',
-            'h.pane.wsheet.layout',
-            'h.pane.wsheet.layout_all',
-            'h.pane.wsheet.layout_mode',
-            'h.pane.wsheet.maximize',
-            'h.pane.wsheet.maximize_adjust',
-            'h.pane.wsheet.minimize',
-            'h.pane.wsheet.minimize_adjust',
-            'h.pane.wsheet.mode_switch',
-            'h.pane.wsheet.node_quick_nav',
-            'h.pane.wsheet.open_display_options',
-            'h.pane.wsheet.open_groups',
-            'h.pane.wsheet.open_treeview',
-            'h.pane.wsheet.opmenu.flag_debug',
-            'h.pane.wsheet.rename_node',
-            'h.pane.wsheet.scope_chans',
-            'h.pane.wsheet.select',
-            'h.pane.wsheet.select_mode',
-            'h.pane.wsheet.snap_netbox_bounds',
-            'h.pane.wsheet.stitch_mode',
-            'h.pane.wsheet.zoom_in',
-            'h.pane.wsheet.zoom_out',
-            #
-            # h.playbar
-            #
-            'h.playbar.next_bookmark',
-            'h.playbar.prev_bookmark',
-            'h.playbar.show_range',
-            #
-            # inputfield
-            #
-            'inputfield.context_help',
-            'inputfield.editor',
-        )
-
-        for assignment in assignments:
-            context = assignment.rpartition('.')[0]
-            symbol = assignment
-            hou.hotkeys.clearAssignments(context, symbol)
-
-
-    def addAssignments(self):
-        assignments = (
-            #
-            # h
-            #
-            ('h.hc_panel', 'alt+shift+d'),
-            ('h.stow_shelf', 'ctrl+]'),
-            #
-            # h.pane
-            #
-            ('h.pane.shelf',   'ctrl+['),
-            ('h.pane.nexttab', 'ctrl+tab'),
-            ('h.pane.prevtab', 'ctrl+shift+tab'),
-            #
-            # h.pane.gview
-            #
-            ('h.pane.gview.refplane',                  'shift+g'),
-            ('h.pane.gview.state.view.home_selection', 'shift+s'),
-            #
-            # h.pane.parms
-            #
-            ('h.pane.parms.edit_expression', 'alt+e'),
-            #
-            # h.pane.editparms
-            #
-            ('h.pane.editparms.selectall', 'alt+h'),
-            #
-            # h.pane.wsheet
-            #
-            ('h.pane.wsheet.bypass_mode',       'q'),
-            # ('h.pane.wsheet.desel_noncurrent',  'ctrl+d'),
-            ('h.pane.wsheet.doautomovenodes',   'ctrl+pad9'),
-            ('h.pane.wsheet.down',              'shift+j'),
-            ('h.pane.wsheet.drop_on_wire_mode', 'pad8'),
-            ('h.pane.wsheet.flag2_mode',        'w'),
-            ('h.pane.wsheet.flag3_mode',        'e'),
-            ('h.pane.wsheet.home_selected',     'shift+s'),
-            ('h.pane.wsheet.jump_mark_1',       'pad1'),
-            ('h.pane.wsheet.jump_mark_2',       'pad2'),
-            ('h.pane.wsheet.jump_mark_3',       'pad3'),
-            ('h.pane.wsheet.jump_mark_4',       'pad4'),
-            ('h.pane.wsheet.jump_mark_5',       'pad5'),
-            ('h.pane.wsheet.left',              'shift+h'),
-            ('h.pane.wsheet.node_quick_nav',    'ctrl+f'),
-            ('h.pane.wsheet.right',             'shift+l'),
-            ('h.pane.wsheet.rename_node',       'ctrl+r'),
-            ('h.pane.wsheet.set_mark_1',        'ctrl+pad1'),
-            ('h.pane.wsheet.set_mark_2',        'ctrl+pad2'),
-            ('h.pane.wsheet.set_mark_3',        'ctrl+pad3'),
-            ('h.pane.wsheet.set_mark_4',        'ctrl+pad4'),
-            ('h.pane.wsheet.set_mark_5',        'ctrl+pad5'),
-            ('h.pane.wsheet.select',            'ctrl+a'),
-            ('h.pane.wsheet.up',                'shift+k'),
-            #
-            # h.pane.textport
-            #
-            ('h.pane.textport.up',             'ctrl+p'),
-            ('h.pane.textport.down',           'ctrl+n'),
-            ('h.pane.textport.next',           'ctrl+f'),
-            ('h.pane.textport.prev',           'ctrl+b'),
-            ('h.pane.textport.top',            'ctrl+a'),
-            ('h.pane.textport.bottom',         'ctrl+e'),
-            ('h.pane.textport.nextword',       'alt+f'),
-            ('h.pane.textport.pageup',         'alt+v'),
-            ('h.pane.textport.pagedown',       'ctrl+v'),
-            ('h.pane.textport.firstline',      'ctrl+shift+,'),
-            ('h.pane.textport.lastline',       'ctrl+shift+.'),
-            ('h.pane.textport.jump_to_line',   'alt+g'),
-            ('h.pane.textport.selectup',       'ctrl+shift+p'),
-            ('h.pane.textport.selectdown',     'ctrl+shift+n'),
-            ('h.pane.textport.selectnext',     'ctrl+shift+f'),
-            ('h.pane.textport.selectprev',     'ctrl+shift+b'),
-            ('h.pane.textport.selectbottom',   'ctrl+shift+e'),
-            ('h.pane.textport.selecttop',      'ctrl+shift+a'),
-            ('h.pane.textport.selectnextword', 'alt+shift+f'),
-            ('h.pane.textport.toggle_comment', 'ctrl+/'),
-            #
-            # inputfield
-            #
-            ('inputfield.up',        'ctrl+p'),
-            ('inputfield.down',      'ctrl+n'),
-            ('inputfield.next',      'ctrl+f'),
-            ('inputfield.prev',      'ctrl+b'),
-            ('inputfield.next_word', 'alt+f'),
-            ('inputfield.prev_word', 'alt+b'),
-            ('inputfield.end',       'ctrl+e'),
-            ('inputfield.home',      'ctrl+a'),
-        )
-
-        for assignment in assignments:
-            context = assignment[0].rpartition('.')[0]
-            symbol = assignment[0]
-            key = assignment[1]
-            hou.hotkeys.addAssignment(context, symbol, key)
-
-
-    def bindCommands(self):
-
-        list = ()
-        for command in list:
-            context = binding[0]
-            command = binding[1]
-            hou.hotkeys.addCommandBinding(context, command)
diff --git a/python3.11libs/hc/hcbindings.py b/python3.11libs/hc/hcbindings.py
new file mode 100644
index 0000000..e516653
--- /dev/null
+++ b/python3.11libs/hc/hcbindings.py
@@ -0,0 +1,49 @@
+import hou
+import json
+from pathlib import Path
+
+"""
+KEY NAMES
+uparrow, downarrow, leftarrow, rightarrow
+alt, cmd, shift, ctrl, tab, del, backspace, enter, esc
+f1...f12
+pageup, pagedown, end, home, insert
+/, \
+pad0...pad9
+padstar, padslash
+pause
+space
+"""
+
+class HCBindings:
+    def __init__(self):
+        return
+
+    def load(self):
+        self.clear()
+        self.assign()
+
+    def clear(self):
+        path = Path(hou.getenv("HC_PATH"))
+        file = path / "scripts" / "hotkeys_clear.json"
+        data = json.loads(file.read_text())
+        commands = data.get("commands")
+        for command in commands:
+            context = command.rpartition('.')[0]
+            hou.hotkeys.clearAssignments(context, command)
+
+    def assign(self):
+        path = Path(hou.getenv("HC_PATH"))
+        file = path / "scripts" / "hotkeys_assign.json"
+        data = json.loads(file.read_text())
+        assignments = data.get("assignments")
+        for symbol, key in assignments.items():
+            context = symbol.rpartition('.')[0]
+            hou.hotkeys.addAssignment(context, symbol, key)
+
+    def bindCommands(self):
+        list = ()
+        for command in list:
+            context = binding[0]
+            command = binding[1]
+            hou.hotkeys.addCommandBinding(context, command)
diff --git a/python3.11libs/hc/cam.py b/python3.11libs/hc/hccam.py
similarity index 92%
rename from python3.11libs/hc/cam.py
rename to python3.11libs/hc/hccam.py
index aa0ea99..651c81b 100644
--- a/python3.11libs/hc/cam.py
+++ b/python3.11libs/hc/hccam.py
@@ -1,19 +1,17 @@
 import hou
-from .geo import Geo
-from .sceneviewer import SceneViewer
+from .hcgeo import HCGeo
+from .hcsceneviewer import HCSceneViewer
 
 """
 Accepts 1 camera node object and 1 scene viewer object as arguments.
 """
 
-
-class Cam:
-    def __init__(self, node, hou_scene_viewer):
-        self.node             = node
-        self.hou_scene_viewer = hou_scene_viewer
-        self.scene_viewer     = SceneViewer(hou_scene_viewer)
-
-        self.node      = node
+class HCCam:
+    def __init__(self, node, scene_viewer):
+        self.node = node
+        self.scene_viewer = scene_viewer
+        self.hc_scene_viewer = HCSceneViewer(scene_viewer)
+        self.node = node
         self._t            = hou.Vector3(0, 0, 0)
         self._r            = hou.Vector3(0, 0, 0)
         self._p            = hou.Vector3(0, 0, 0)
@@ -41,7 +39,7 @@ class Cam:
     """ Movement """
 
     def center(self):
-        centroid = self.scene_viewer.geo().centroid()
+        centroid = self.hc_scene_viewer.geo().centroid()
         self.t = hou.Vector3(centroid)
         self.p = hou.Vector3(centroid)
 
@@ -219,12 +217,12 @@ class Cam:
         self.aspect_ratio = ratio
 
     def geo(self):
-        return self.scene_viewer.geo()
+        return self.hc_scene_viewer.geo()
 
     def lock(self):
-        viewport = self.viewport()
-        viewport.setCamera(self.node)
-        viewport.lockCameraToView(1)
+        hc_viewport = self.hc_viewport()
+        hc_viewport.setCamera(self.node)
+        hc_viewport.lockCameraToView(1)
 
     def reset(self):
         self.t          = hou.Vector3(0, 0, 2)
@@ -264,5 +262,5 @@ class Cam:
         self.viewport().lockCameraToView(0)
 
     def viewport(self):
-        return self.scene_viewer.allViewports()[3]
+        return self.hc_scene_viewer.allViewports()[3]
 
diff --git a/python3.11libs/hc/hcconfigloader.py b/python3.11libs/hc/hcconfigloader.py
new file mode 100644
index 0000000..8af4721
--- /dev/null
+++ b/python3.11libs/hc/hcconfigloader.py
@@ -0,0 +1,6 @@
+import json
+import os
+import hou
+
+def load_settings():
+    return
diff --git a/python3.11libs/hc/defaultcam.py b/python3.11libs/hc/hcdefaultcam.py
similarity index 79%
rename from python3.11libs/hc/defaultcam.py
rename to python3.11libs/hc/hcdefaultcam.py
index a5e7074..801bb5d 100644
--- a/python3.11libs/hc/defaultcam.py
+++ b/python3.11libs/hc/hcdefaultcam.py
@@ -1,8 +1,8 @@
 import hou
 
-class DefaultCam:
-    def __init__(self, hou_defaultcam):
-        self.hou_defaultcam = hou_defaultcam
+class HCDefaultCam:
+    def __init__(self, default_cam):
+        self.default_cam = default_cam
 
     def frame(self):
         for viewport in self.viewports():
diff --git a/python3.11libs/hc/geo.py b/python3.11libs/hc/hcgeo.py
similarity index 75%
rename from python3.11libs/hc/geo.py
rename to python3.11libs/hc/hcgeo.py
index 695f61d..e27f5c1 100644
--- a/python3.11libs/hc/geo.py
+++ b/python3.11libs/hc/hcgeo.py
@@ -1,11 +1,11 @@
 import hou
 
-class Geo:
-    def __init__(self, hou_geo):
-        self.hou_geo = hou_geo
+class HCGeo:
+    def __init__(self, geo):
+        self.geo = geo
 
     def bbox(self):
-        return self.hou_geo.boundingBox()
+        return self.geo.boundingBox()
 
     def centroid(self):
         geo_out = hou.Geometry()
diff --git a/python3.11libs/hc/guides.py b/python3.11libs/hc/hcguides.py
similarity index 83%
rename from python3.11libs/hc/guides.py
rename to python3.11libs/hc/hcguides.py
index b266650..244d761 100644
--- a/python3.11libs/hc/guides.py
+++ b/python3.11libs/hc/hcguides.py
@@ -1,12 +1,12 @@
 import hou
 
-class Guides:
+class HCGuides:
     def __init__(self, state):
-        self.state            = state
-        self.cam_node         = state.cam_node
-        self.cam              = state.cam
-        self.hou_scene_viewer = state.hou_scene_viewer
-        self.scene_viewer     = state.scene_viewer
+        self.state = state
+        self.cam_node = state.cam_node
+        self.cam = state.cam
+        self.scene_viewer = hou_scene_viewer
+        self.hc_scene_viewer = hc_state.scene_viewer
 
         self.options = {
             'axis_size': 1,
@@ -14,23 +14,23 @@ class Guides:
         }
 
         self.states = {
-            'cam_axis':   0,
+            'cam_axis': 0,
             'pivot_axis': 1,
-            'bbox':       0,
-            'perim':      0,
-            'pivot_2d':   0,
-            'pivot_3d':   0,
-            'ray':        0
+            'bbox': 0,
+            'perim': 0,
+            'pivot_2d': 0,
+            'pivot_3d': 0,
+            'ray': 0
         }
 
         self.cam_axis = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='cam_axis'
         )
 
         self.pivot_axis = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='pivot_axis',
             params={
@@ -39,7 +39,7 @@ class Guides:
         )
 
         self.bbox = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='bbox',
             params={
@@ -49,19 +49,19 @@ class Guides:
         )
 
         self.perim = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='perim'
         )
 
         self.pivot_2d = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='pivot_2d'
         )
 
         self.pivot_3d = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Face,
             name='pivot_3d',
             params={
@@ -71,7 +71,7 @@ class Guides:
         )
 
         self.ray = hou.GeometryDrawable(
-            scene_viewer=self.hou_scene_viewer,
+            scene_viewer=self.scene_viewer,
             geo_type=hou.drawableGeometryType.Line,
             name='ray',
             params={
@@ -120,14 +120,14 @@ class Guides:
 
     def makeCamAxis(self):
         axes = (
-            self.cam.local_x,
-            self.cam.local_y,
-            self.cam.local_z
+            self.hc_cam.local_x,
+            self.hc_cam.local_y,
+            self.hc_cam.local_z
         )
         geo = hou.Geometry()
         for i in range(3):
-            P0 = self.cam.t + axes[i]
-            P1 = self.cam.t + axes[i] * -1
+            P0 = self.hc_cam.t + axes[i]
+            P1 = self.hc_cam.t + axes[i] * -1
             pts = geo.createPoints((P0, P1))
             poly = geo.createPolygon(is_closed=False)
             poly.addVertex(pts[0])
@@ -135,7 +135,6 @@ class Guides:
         self.cam_axis.setGeometry(geo)
 
     def makePivotAxis(self):
-        print('test')
         axes = (
             self.cam.local_x,
             self.cam.local_y,
@@ -152,8 +151,8 @@ class Guides:
         geo = hou.Geometry()
         geo.addAttrib(hou.attribType.Point, 'Cd', (0.1, 0.1, 0.1))
         for i in range(3):
-            P0 = self.cam.p + axes[i]
-            P1 = self.cam.p + axes[i] * -1
+            P0 = self.hc_cam.p + axes[i]
+            P1 = self.hc_cam.p + axes[i] * -1
             pts = geo.createPoints((P0, P1))
             pts[0].setAttribValue('Cd', colors[i])
             pts[1].setAttribValue('Cd', colors[i])
@@ -167,7 +166,7 @@ class Guides:
 
     def makeBbox(self):
         guide_geo = hou.Geometry()
-        target_geo = self.scene_viewer.geo()
+        target_geo = self.hc_scene_viewer.geo()
         bbox = target_geo.bbox()
         box = hou.sopNodeTypeCategory().nodeVerb('box')
         box.setParms(
@@ -186,8 +185,8 @@ class Guides:
             {
                 'divs': 128,
                 'type': 1,
-                't':    self.cam.p,
-                'scale': self.cam.p.distanceTo(self.cam.t),
+                't':    self.hc_cam.p,
+                'scale': self.hc_cam.p.distanceTo(self.cam.t),
                 'orient': 2
             }
         )
@@ -229,7 +228,7 @@ class Guides:
                 'freq':  7,
                 'scale': scale,
                 'type':  1,
-                't':     self.cam.p
+                't':     self.hc_cam.p
             }
         )
         sphere.execute(guide_geo, [])
@@ -238,7 +237,7 @@ class Guides:
     def makeRay(self):
         guide_geo = hou.Geometry()
         guide_geo.addAttrib(hou.attribType.Point, 'Cd', (1, 0, 0))
-        pts = guide_geo.createPoints((self.cam.p, self.cam.t))
+        pts = guide_geo.createPoints((self.hc_cam.p, self.hc_cam.t))
         poly = guide_geo.createPolygon()
         poly.addVertex(pts[0])
         poly.addVertex(pts[1])
diff --git a/python3.11libs/hc/layouts.py b/python3.11libs/hc/hclayouts.py
similarity index 61%
rename from python3.11libs/hc/layouts.py
rename to python3.11libs/hc/hclayouts.py
index d5edef8..728230b 100644
--- a/python3.11libs/hc/layouts.py
+++ b/python3.11libs/hc/hclayouts.py
@@ -1,40 +1,40 @@
-from .session import Session
+from .hcsession import HCSession
 
 def setLayoutQuad(self):
-    session = Session()
-    session.clearLayout()
-    session.allTabs()[0].setType("PythonShell")
-    session.allPanes()[0].splitHorizontal()
-    session.allPanes()[0].splitVertical()
-    session.allPanes()[1].splitVertical()
+    hc_session = HCSession()
+    hc_session.clearLayout()
+    hc_session.allTabs()[0].setType("PythonShell")
+    hc_session.allPanes()[0].splitHorizontal()
+    hc_session.allPanes()[0].splitVertical()
+    hc_session.allPanes()[1].splitVertical()
 
 def setLayoutRamp(self):
-    session = Session()
-    session.removeEventLoopCallbacks()
-    session.clearLayout()
-    session.allPanes()[0].splitVertical()
-    session.allTabs()[1].setType("Parm")
-    session.allPanes()[1].setSplitRatio(0.3)
-    session.allPanes()[1].createTab()
+    hc_session = HCSession()
+    hc_session.removeEventLoopCallbacks()
+    hc_session.clearLayout()
+    hc_session.allPanes()[0].splitVertical()
+    hc_session.allTabs()[1].setType("Parm")
+    hc_session.allPanes()[1].setSplitRatio(0.3)
+    hc_session.allPanes()[1].createTab()
 
 def setLayoutTriH(self):
-    session = Session()
-    session.removeEventLoopCallbacks()
-    session.clearLayout()
+    hc_session = HCSession()
+    hc_session.removeEventLoopCallbacks()
+    hc_session.clearLayout()
     # Make panes
-    session.allTabs()[0].setType("PythonShell")
-    session.allPanes()[0].splitHorizontal()
-    session.allPanes()[1].splitHorizontal()
+    hc_session.allTabs()[0].setType("PythonShell")
+    hc_session.allPanes()[0].splitHorizontal()
+    hc_session.allPanes()[1].splitHorizontal()
     # Make tabs
-    session.allPanes()[1].createTab("PythonShell")
-    session.allPanes()[1].allTabs()[0].setIsCurrentTab()
+    hc_session.allPanes()[1].createTab("PythonShell")
+    hc_session.allPanes()[1].allTabs()[0].setIsCurrentTab()
     # Set types
-    session.allPanes()[0].allTabs()[0].setType("SceneViewer")
-    session.allPanes()[1].allTabs()[0].setType("Parm")
-    session.allPanes()[1].allTabs()[1].setType("DetailsView")
-    session.allPanes()[2].allTabs()[0].setType("NetworkEditor")
+    hc_session.allPanes()[0].allTabs()[0].setType("SceneViewer")
+    hc_session.allPanes()[1].allTabs()[0].setType("Parm")
+    hc_session.allPanes()[1].allTabs()[1].setType("DetailsView")
+    hc_session.allPanes()[2].allTabs()[0].setType("NetworkEditor")
     # Ratios
-    session.allPanes()[0].setSplitFraction(0.5)
+    hc_session.allPanes()[0].setSplitFraction(0.5)
     hou.session.last_pane = self.pane()
     hou.ui.addEventLoopCallback(triHCallback)
 
diff --git a/python3.11libs/hc/listener.py b/python3.11libs/hc/hclistener.py
similarity index 100%
rename from python3.11libs/hc/listener.py
rename to python3.11libs/hc/hclistener.py
diff --git a/python3.11libs/hc/menuutils.py b/python3.11libs/hc/hcmenuutils.py
similarity index 100%
rename from python3.11libs/hc/menuutils.py
rename to python3.11libs/hc/hcmenuutils.py
diff --git a/python3.11libs/hc/networkeditor.py b/python3.11libs/hc/hcnetworkeditor.py
similarity index 98%
rename from python3.11libs/hc/networkeditor.py
rename to python3.11libs/hc/hcnetworkeditor.py
index daf5c36..76f089a 100644
--- a/python3.11libs/hc/networkeditor.py
+++ b/python3.11libs/hc/hcnetworkeditor.py
@@ -125,6 +125,9 @@ class NetworkEditor(PathTab):
     def type(self):
         return "NetworkEditor"
 
+    def reloadNodeShapes(self):
+        self.hou_tab.reloadNodeShapes()
+
     def renameNode(self):
         node = self.currentNode()
         name = hou.ui.readInput("Rename_node", buttons=("Yes", "No"))
diff --git a/python3.11libs/hc/node.py b/python3.11libs/hc/hcnode.py
similarity index 100%
rename from python3.11libs/hc/node.py
rename to python3.11libs/hc/hcnode.py
diff --git a/python3.11libs/hc/hcpane.py b/python3.11libs/hc/hcpane.py
new file mode 100644
index 0000000..8ff0941
--- /dev/null
+++ b/python3.11libs/hc/hcpane.py
@@ -0,0 +1,125 @@
+import hou
+from .hctab           import HCTab
+from .hcpathtab       import HCPathTab
+from .hcsceneviewer   import HCSceneViewer
+from .hcnetworkeditor import HCNetworkEditor
+
+class HCPane:
+    def __init__(self, pane):
+        self.pane = pane
+
+    """ Pane """
+
+    def close(self):
+        for hc_tab in self.allHCTabs():
+            hc_tab.close()
+
+    def isMaximized(self):
+        return self.pane.isMaximized()
+
+    def qtScreenGeometry(self):
+        return self.pane.qtScreenGeometry()
+
+    def setIsMaximized(self, bool):
+        self.pane.setIsMaximized(bool)
+
+    def toggleMaximize(self):
+        self.pane.setIsMaximized(not self.isMaximized())
+
+
+    """ Split """
+
+    def contract(self):
+        fraction = round(self.splitFraction(), 3) + 0.1
+        self.setSplitFraction(fraction)
+        hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
+
+    def expand(self):
+        fraction = round(self.splitFraction(), 3) - 0.1
+        self.setSplitFraction(fraction)
+        hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
+
+    def isSplitMaximized(self):
+        return self.pane.isSplitMaximized()
+
+    def setIsSplitMaximized(self, bool):
+        self.pane.setIsSplitMaximized(bool)
+
+    def setRatioHalf(self):
+        self.setSplitFraction(0.5)
+
+    def setRatioQuarter(self):
+        self.setSplitFraction(0.25)
+
+    def setRatioThird(self):
+        self.setSplitFraction(0.333)
+
+    def setSplitFraction(self, fraction):
+        self.pane.setSplitFraction(fraction)
+
+    def splitFraction(self):
+        return self.pane.getSplitFraction()
+
+    def splitHorizontal(self):
+        self.pane.splitHorizontally()
+
+    def splitRotate(self):
+        self.pane.splitRotate()
+
+    def splitSwap(self):
+        self.pane.splitSwap()
+
+    def splitVertical(self):
+        self.pane.splitVertically()
+
+    def toggleSplitMaximized(self):
+        self.setIsSplitMaximized(not self.isSplitMaximized())
+
+
+    """ Interface """
+
+    def allHCTabs(self):
+        hc_tabs = []
+        for tab in self.pane.tabs():
+            hc_tabs.append(HCTab(tab))
+        return hc_tabs
+
+    def convertTab(self, tab):
+        tab_type = tab.type()
+        if tab_type == hou.paneTabType.SceneViewer:
+            return HCSceneViewer(tab)
+        elif tab_type == hou.paneTabType.NetworkEditor:
+            return HCNetworkEditor(tab)
+        elif tab_type == hou.paneTabType.DetailsView:
+            return HCPathTab(tab)
+        elif tab_type == hou.paneTabType.Parm:
+            return HCPathTab(tab)
+        else:
+            return HCTab(tab)
+
+    def currentHCTab(self):
+        tab = self.pane.currentTab()
+        return self.convertTab(tab)
+
+    def isShowingTabs(self):
+        return self.pane.isShowingPaneTabs()
+
+    def nextTab(self):
+        tabs = self.pane.tabs()
+        tab = self.pane.currentTab()
+        index = tabs.index(tab)
+        index = (index + 1) % len(tabs)
+        tabs[index].setIsCurrentTab()
+
+    def previousTab(self):
+        tabs = self.pane.tabs()
+        tab = self.pane.currentTab()
+        index = tabs.index(tab)
+        index = (index - 1) % len(tabs)
+        tabs[index].setIsCurrentTab()
+
+    def showTabs(self, value):
+        self.pane.showPaneTabs(value)
+
+    def toggleTabs(self):
+        self.showTabs(not self.isShowingTabs())
diff --git a/python3.11libs/hc/panel.py b/python3.11libs/hc/hcpanel.py
similarity index 91%
rename from python3.11libs/hc/panel.py
rename to python3.11libs/hc/hcpanel.py
index 1d00fcf..1cd3b69 100644
--- a/python3.11libs/hc/panel.py
+++ b/python3.11libs/hc/hcpanel.py
@@ -2,9 +2,9 @@ import hou, inspect
 from PySide6        import QtCore, QtGui, QtWidgets
 from PySide6.QtCore import Qt
 from fuzzyfinder    import fuzzyfinder
-from .session       import Session
-from .pane          import Pane
-from .tab           import Tab
+from .hcsession     import HCSession
+from .hcpane        import HCPane
+from .hctab         import HCTab
 from importlib      import reload
 
 
@@ -23,7 +23,7 @@ class Panel(QtWidgets.QDialog):
         self.pane = self.tab.pane()
         self.map = {}
         type = self.tab.type()
-        print("\n###\nPanel Context: " + str(type) + "\n###")
+        print("HC Panel - Context: " + str(type))
         if type == "Tab":
             self.map = self.baseMap()
         elif type == "PathTab":
@@ -160,15 +160,16 @@ class Panel(QtWidgets.QDialog):
 
     def networkEditorMap(self):
         return {
-            "Arrange Nodes":     self.tab.arrangeNodes,
-            "Deselect All":      self.tab.pwd().deselectAll,
-            "Frame All":         self.tab.frameAll,
-            "Rename Node":       self.tab.renameNode,
-            "Set Node Colors":   self.tab.setNodeColors,
-            "Set Node Shapes":   self.tab.setNodeShapes,
-            "Show Path Message": self.tab.showPathMessage,
-            "Toggle Grid Mode":  self.tab.toggleGridMode,
-            "Toggle Menu":       self.tab.toggleMenu
+            "Arrange Nodes":      self.tab.arrangeNodes,
+            "Deselect All":       self.tab.pwd().deselectAll,
+            "Frame All":          self.tab.frameAll,
+            "Reload Node Shapes": self.tab.reloadNodeShapes,
+            "Rename Node":        self.tab.renameNode,
+            "Set Node Colors":    self.tab.setNodeColors,
+            "Set Node Shapes":    self.tab.setNodeShapes,
+            "Show Path Message":  self.tab.showPathMessage,
+            "Toggle Grid Mode":   self.tab.toggleGridMode,
+            "Toggle Menu":        self.tab.toggleMenu
             # "Show Radial Menu":  self.tab.showRadialMenu,
         }
 
diff --git a/python3.11libs/hc/pathtab.py b/python3.11libs/hc/hcpathtab.py
similarity index 52%
rename from python3.11libs/hc/pathtab.py
rename to python3.11libs/hc/hcpathtab.py
index d1ed0bb..3d4991d 100644
--- a/python3.11libs/hc/pathtab.py
+++ b/python3.11libs/hc/hcpathtab.py
@@ -1,26 +1,24 @@
 import hou
-from .geo  import Geo
-from .node import Node
-from .tab  import Tab
+from .hcgeo  import HCGeo
+from .hcnode import HCNode
+from .hctab  import HCTab
 
-class PathTab(Tab):
-    def __init__(self, hou_tab):
-        self.hou_tab = hou_tab
+class HCPathTab(HCTab):
+    def __init__(self, tab):
+        self.tab = tab
 
-    def geo(self):
-        return Geo(self.hou_geo())
+    def hcGeo(self):
+        return HCGeo(self.geo())
 
-    def hou_geo(self):
+    def geo(self):
         visible_nodes = self.pwd().visibleNodes()
         geo = hou.Geometry()
-
         for node in visible_nodes:
             geo.merge(node.geometry())
-
         return geo
 
     def path(self):
         return self.pwd().path()
 
     def pwd(self):
-        return Node(self.hou_tab.pwd())
+        return Node(self.tab.pwd())
diff --git a/python3.11libs/hc/hcprefs.py b/python3.11libs/hc/hcprefs.py
new file mode 100644
index 0000000..e653abb
--- /dev/null
+++ b/python3.11libs/hc/hcprefs.py
@@ -0,0 +1,3 @@
+class HCPrefs:
+    def __init__(self):
+        self.node_color = (0.28, 0.35, 0.4)
diff --git a/python3.11libs/hc/radial.py b/python3.11libs/hc/hcradial.py
similarity index 56%
rename from python3.11libs/hc/radial.py
rename to python3.11libs/hc/hcradial.py
index 5dcef18..6c71145 100644
--- a/python3.11libs/hc/radial.py
+++ b/python3.11libs/hc/hcradial.py
@@ -23,27 +23,27 @@ class Radial:
         createItem(
             pos=0,
             label="UI",
-            submenu=True, script="from hc import Radial; Radial.sceneViewerUI()"
+            submenu=True, script="from hc import HCRadial; HCRadial.sceneViewerUI()"
         )
         createItem(
             pos=7,
             label="Operation bar",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).toggleOperationBar()"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleOperationBar()"
         )
         createItem(
             pos=6,
             label="Display bar",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).toggleDisplayOptionsToolbar()"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleDisplayOptionsToolbar()"
         )
         createItem(
             pos=5,
             label="Selection bar",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).toggleSelectionBar()"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleSelectionBar()"
         )
         createItem(
             pos=4,
             label="Keycam",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).keycam()"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).keycam()"
         )
         return menu
 
@@ -52,42 +52,42 @@ class Radial:
         createItem(
             pos=0,
             label="DoubleSide",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('DoubleSide')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('DoubleSide')"
         )
         createItem(
             pos=1,
             label="DoubleStack",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('DoubleStack')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('DoubleStack')"
         )
         createItem(
             pos=2,
             label="Quad",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('Quad')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('Quad')"
         )
         createItem(
             pos=3,
             label="QuadBottomSplit",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('QuadBottomSplit')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('QuadBottomSplit')"
         )
         createItem(
             pos=4,
             label="QuadLeftSplit",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('QuadLeftSplit')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('QuadLeftSplit')"
         )
         createItem(
             pos=5,
             label="Single",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('Single')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('Single')"
         )
         createItem(
             pos=6,
             label="TripleBottomSplit",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('TripleBottomSplit')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('TripleBottomSplit')"
         )
         createItem(
             pos=7,
             label="TripleLeftSplit",
-            script="from hc import SceneViewer; SceneViewer(kwargs['pane']).setLayout('TripleLeftSplit')"
+            script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('TripleLeftSplit')"
         )
         return menu
 
@@ -96,37 +96,37 @@ class Radial:
         createItem(
             pos=0,
             label="Tabs",
-            script="from hc import Tab; Tab(kwargs['pane']).pane().toggleTabs()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleTabs()"
         )
         createItem(
             pos=7,
             label="Path",
-            script="from hc import Tab; Tab(kwargs['pane']).toggleNetworkControls()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).toggleNetworkControls()"
         )
         createItem(
             pos=6,
             label="Maximize",
-            script="from hc import Tab; Tab(kwargs['pane']).pane().toggleMaximize()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleMaximize()"
         )
         createItem(
             pos=5,
             label="Stowbars",
-            script="from hc import Session; Session().toggleStowbars()"
+            script="from hc import HCSession; HCSession().toggleStowbars()"
         )
         createItem(
             pos=4,
             label="All tabs",
-            script="from hc import Session; Session().toggleTabs()"
+            script="from hc import HCSession; HCSession().toggleTabs()"
         )
         createItem(
             pos=3,
             label="All paths",
-            script="from hc import Session; Session().toggleNetworkControls()"
+            script="from hc import HCSession; HCSession().toggleNetworkControls()"
         )
         createItem(
             pos=2,
             label="Layout",
-            submenu=True, script="from hc import radialutils; radialutils.viewerRadialLayout()"
+            submenu=True, script="from hc import HCRadial; HCRadial.viewerRadialLayout()"
         )
         return menu
 
@@ -137,17 +137,17 @@ class Radial:
             pos=0,
             submenu=True,
             label="UI",
-            script="from hc import Radial; Radial.networkEditorUI()"
+            script="from hc import HCRadial; HCRadial.networkEditorUI()"
         )
         createItem(
             pos=7,
             label="Menu",
-            script="from hc import NetworkEditor; NetworkEditor(kwargs['pane']).toggleMenu()"
+            script="from hc import HCNetworkEditor; HCNetworkEditor(kwargs['pane']).toggleMenu()"
         )
         createItem(
             pos=6,
             label="Frame all",
-            script="from hc import NetworkEditor; NetworkEditor(kwargs['pane']).frameAll()"
+            script="from hc import HCNetworkEditor; HCNetworkEditor(kwargs['pane']).frameAll()"
         )
         return menu
 
@@ -156,31 +156,31 @@ class Radial:
         createItem(
             pos=0,
             label="Tabs",
-            script="from hc import Tab; Tab(kwargs['pane']).pane().toggleTabs()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleTabs()"
         )
         createItem(
             pos=7,
             label="Path",
-            script="from hc import Tab; Tab(kwargs['pane']).toggleNetworkControls()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).toggleNetworkControls()"
         )
         createItem(
             pos=6,
             label="All tabs",
-            script="from hc import Session; Session().toggleTabs()"
+            script="from hc import HCSession; HCSession().toggleTabs()"
         )
         createItem(
             pos=5,
             label="All paths",
-            script="from hc import Session; Session().toggleNetworkControls()"
+            script="from hc import HCSession; HCSession().toggleNetworkControls()"
         )
         createItem(
             pos=4,
             label="Stowbars",
-            script="from hc import Session; Session().toggleStowbars()"
+            script="from hc import HCSession; HCSession().toggleStowbars()"
         )
         createItem(
             pos=3,
             label="Maximize",
-            script="from hc import Tab; Tab(kwargs['pane']).pane().toggleMaximize()"
+            script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleMaximize()"
         )
         return menu
diff --git a/python3.11libs/hc/sceneviewer.py b/python3.11libs/hc/hcsceneviewer.py
similarity index 75%
rename from python3.11libs/hc/sceneviewer.py
rename to python3.11libs/hc/hcsceneviewer.py
index 11d3292..299f0e8 100644
--- a/python3.11libs/hc/sceneviewer.py
+++ b/python3.11libs/hc/hcsceneviewer.py
@@ -1,5 +1,6 @@
 import hou, types
-from .pathtab import PathTab
+from .hcpathtab import HCPathTab
+from .hcviewport import HCViewport
 
 """
 Layout/viewport IDs
@@ -35,27 +36,26 @@ setViewportLayout(layout, single=-1)
 3: bottom-right quad viewport (default: Right)
 """
 
-class SceneViewer(PathTab):
-    def __init__(self, hou_tab):
-        self.hou_tab = hou_tab
-
+class HCSceneViewer(HCPathTab):
+    def __init__(self, tab):
+        self.tab = tab
 
     """ Geometry """
 
-    def displaySets(self):
+    def allDisplaySets(self):
         displaySets = []
-        for viewport in self.viewports():
-            settings = viewport.settings()
+        for hc_viewport in self.allHCViewports():
+            settings = hc_viewport.settings()
             displaySet = settings.displaySet(hou.displaySetType.DisplayModel)
             displaySets.append(displaySet)
-        return(displaySets)
+        return displaySets
 
     def toggleLightGeo(self):
         self.setShowLights(not self.showLights())
 
     def toggleBackface(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPrimBackfaces():
                 visible = 1
@@ -64,7 +64,7 @@ class SceneViewer(PathTab):
 
     def togglePointMarkers(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPointMarkers():
                 visible = 1
@@ -73,7 +73,7 @@ class SceneViewer(PathTab):
 
     def togglePointNormals(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPointNormals():
                 visible = 1
@@ -82,7 +82,7 @@ class SceneViewer(PathTab):
 
     def togglePointNumbers(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPointNumbers():
                 visible = 1
@@ -91,7 +91,7 @@ class SceneViewer(PathTab):
 
     def togglePrimNormals(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPrimNormals():
                 visible = 1
@@ -100,7 +100,7 @@ class SceneViewer(PathTab):
 
     def togglePrimNumbers(self):
         visible = 0
-        displaySets = self.displaySets()
+        displaySets = self.allDisplaySets()
         for displaySet in displaySets:
             if displaySet.isShowingPrimNumbers():
                 visible = 1
@@ -108,7 +108,7 @@ class SceneViewer(PathTab):
             displaySet.showPrimNumbers(not visible)
 
     def toggleVectors(self):
-        for viewport in self.viewports():
+        for hc_viewport in self.allHCViewports():
             settings = viewport.settings()
             scale = settings.vectorScale()
             if scale == 1:
@@ -118,21 +118,20 @@ class SceneViewer(PathTab):
             else:
                 settings.setVectorScale(1)
 
-
     """ Grids """
 
     def referencePlane(self):
-        return self.hou_tab.referencePlane()
+        return self.tab.referencePlane()
 
     def toggleGrid(self):
-        refplane = self.referencePlane()
-        refplane.setIsVisible(not refplane.isVisible())
+        reference_plane = self.referencePlane()
+        reference_plane.setIsVisible(not reference_plane.isVisible())
 
 
     """ Layout """
 
     def layout(self):
-        return self.hou_tab.viewportLayout()
+        return self.tab.viewportLayout()
 
     def layouts(self):
         return (
@@ -177,34 +176,34 @@ class SceneViewer(PathTab):
             "TripleBottomSplit": hou.geometryViewportLayout.TripleBottomSplit,
             "TripleLeftSplit":   hou.geometryViewportLayout.TripleLeftSplit
         }
-        self.hou_tab.setViewportLayout(layout_map[layout])
+        self.tab.setViewportLayout(layout_map[layout])
 
 
     """ UI """
 
     def isVisibleDisplayBar(self):
-        return self.hou_tab.isShowingDisplayOptionsBar()
+        return self.tab.isShowingDisplayOptionsBar()
 
     def isVisibleGroupList(self):
-        return self.hou_tab.isGroupListVisible()
+        return self.tab.isGroupListVisible()
 
     def isVisibleOperationBar(self):
-        return self.hou_tab.isShowingOperationBar()
+        return self.tab.isShowingOperationBar()
 
     def isVisibleSelectionBar(self):
-        return self.hou_tab.isShowingSelectionBar()
+        return self.tab.isShowingSelectionBar()
 
     def showDisplayBar(self, value):
-        self.hou_tab.showDisplayOptionsBar(value)
+        self.tab.showDisplayOptionsBar(value)
 
     def showGroupList(self, value):
-        self.hou_tab.setGroupListVisible(value)
+        self.tab.setGroupListVisible(value)
 
     def showOperationBar(self, value):
-        self.hou_tab.showOperationBar(value)
+        self.tab.showOperationBar(value)
 
     def showSelectionBar(self, value):
-        self.hou_tab.showSelectionBar(value)
+        self.tab.showSelectionBar(value)
 
     def toggleDisplayBar(self):
         self.showDisplayBar(not self.isVisibleDisplayBar())
@@ -219,7 +218,7 @@ class SceneViewer(PathTab):
         self.showSelectionBar(not self.isVisibleSelectionBar())
 
     def toggleBars(self):
-        state = self.hou_tab.isShowingOperationBar() + self.hou_tab.isShowingDisplayOptionsBar() + self.hou_tab.isShowingSelectionBar()
+        state = self.tab.isShowingOperationBar() + self.tab.isShowingDisplayOptionsBar() + self.tab.isShowingSelectionBar()
         if state > 0:
             self.showOperationBar(0)
             self.showDisplayBar(0)
@@ -229,11 +228,10 @@ class SceneViewer(PathTab):
             self.showDisplayBar(1)
             self.showSelectionBar(1)
 
-
     """ Utils """
 
     def type(self):
-        return "SceneViewer"
+        return "HCSceneViewer"
 
     def keycam(self):
         """
@@ -241,13 +239,13 @@ class SceneViewer(PathTab):
         Chop, ChopNet, Cop, Cop2, CopNet, Data, Director, Dop, Driver, Lop, Manager, Object, Shop, Sop, Top, TopNet, Vop, VopNet
         """
         context_map = {
-            "Object": "Entered keycam in an obj context",
-            "Sop": "Entered keycam in a sop context",
-            "Lop": "Entered keycam in a lop context",
+            "Object": "Keycam obj context",
+            "Sop": "Keycam sop context",
+            "Lop": "Keycam lop context",
         }
         context = self.pwd().childCat()
         if context in context_map:
-            self.hou_tab.setCurrentState('keycam')
+            self.tab.setCurrentState('keycam')
             hou.ui.setStatusMessage(context_map[context])
         else:
             hou.ui.setStatusMessage("No obj, sop or lop context", hou.severityType.Error)
@@ -256,18 +254,21 @@ class SceneViewer(PathTab):
     """ Viewports """
 
     def homeAllViewports(self):
-        for viewport in self.viewports():
-            viewport.home()
+        for hc_viewport in self.allHCViewports():
+            hc_viewport.home()
 
-    def currentViewport(self):
-        return self.hou_tab.curViewport()
+    def currentHCViewport(self):
+        return self.tab.curViewport()
 
-    def allViewports(self):
-        return self.hou_tab.viewports()
+    def allHCViewports(self):
+        hc_viewports = []
+        for viewport in self.tab.viewports():
+            hc_viewports.append(HCViewport(viewport))
+        return hc_viewports()
 
-    def frame(self):
-        for viewport in self.allViewports():
-            cam = viewport.camera()
+    def frameAllViewports(self):
+        for hc_viewport in self.allHCViewports():
+            cam = hc_viewport.camera()
             # Is camera node or default
             if not cam:
                 viewport.frameAll()
diff --git a/python3.11libs/hc/session.py b/python3.11libs/hc/hcsession.py
similarity index 83%
rename from python3.11libs/hc/session.py
rename to python3.11libs/hc/hcsession.py
index a5cb232..c1890fd 100644
--- a/python3.11libs/hc/session.py
+++ b/python3.11libs/hc/hcsession.py
@@ -1,79 +1,81 @@
 import hou
-from .networkeditor import NetworkEditor
-from .sceneviewer import SceneViewer
-from .pane import Pane
-from .pathtab import PathTab
-from .tab import Tab
+from .hcbindings import HCBindings
+from .hcnetworkeditor import HCNetworkEditor
+from .hcsceneviewer import HCSceneViewer
+from .hcpane import HCPane
+from .hcpathtab import HCPathTab
+from .hctab import HCTab
 
 
 class Session:
     def __init__(self):
         return
 
-
     """ Context """
 
     def currentNode(self):
-        return self.currentTab().currentNode()
+        return self.currentHCTab().currentNode()
 
     def projectPath(self):
         return hou.hipFile.path()
 
 
-    """ Layout """
-    """ 'allTabs' and 'currentTab' methods intentionally do not use the hou.ui.paneTabUnderCursor method """
+    """
+    Layout
+    'allTabs' and 'currentTab' do not use hou.ui.paneTabUnderCursor method
+    """
 
-    def allNetworkEditors(self):
-        editors = []
-        for tab in self.allTabs():
-            if tab.type() == "NetworkEditor":
-                editors.append(tab)
-        return editors
+    def allHCNetworkEditors(self):
+        hc_network_editors = []
+        for hc_tab in self.allHCTabs():
+            if hc_tab.type() == "NetworkEditor":
+                hc_network_editors.append(tab)
+        return hc_network_editors
 
-    def allPanes(self):
-        panes = []
-        for hou_pane in self.desktop().panes():
-            panes.append(Pane(hou_pane))
+    def allHCPanes(self):
+        hc_panes = []
+        for pane in self.desktop().panes():
+            hc_panes.append(HCPane(pane))
         return panes
 
-    def allSceneViewers(self):
-        viewers = []
-        for tab in self.tabs():
+    def allHCSceneViewers(self):
+        hc_scene_viewers = []
+        for tab in self.allTabs():
             if tab.type() == "SceneViewer":
                 viewers.append(SceneViewer(tab))
         return viewers
 
-    def allTabs(self):
+    def allHCTabs(self):
         tabs = []
         for pane in self.allPanes():
             for tab in pane.allTabs():
                 tabs.append(tab)
         return tabs
 
-    def allViewports(self):
-        viewports = []
-        viewers = self.sceneViewers
-        for viewer in viewers:
-            for viewport in viewer.viewports():
-                viewports.append(viewport)
-        return viewports
+    def allHCViewports(self):
+        hc_viewports = []
+        hc_scene_viewers = self.allHCSceneViewers
+        for hc_scene_viewer in hc_scene_viewers:
+            for hc_viewport in hc_scene_viewer.allHCCiewports():
+                hc_viewports.append(hc_viewport)
+        return hc_viewports
 
     def clearLayout(self):
-        tabs = self.tabs()
+        tabs = self.allTabs()
         for tab in tabs:
             if tab != tabs[0]:
                 tab.close()
 
-    def currentPane(self):
-        return Pane(hou.ui.paneUnderCursor())
+    def currentHCPane(self):
+        return HCPane(hou.ui.paneUnderCursor())
 
-    def currentTab(self):
-        return self.currentPane().currentTab()
+    def currentHCTab(self):
+        return self.currentHCPane().currentHCTab()
 
     def desktop(self):
         return hou.ui.curDesktop()
 
-    def printLayout(self):
+    def printHCLayout(self):
         panes = hou.ui.panes()
         root = panes[0].getSplitParent()
         lefts = []
@@ -96,13 +98,13 @@ class Session:
             tab.setName('panetab' + str(i))
             i += 1
 
-    def root(self):
+    def layoutRoot(self):
         root = hou.ui.panes()[0].getSplitParent().getSplitParent()
 
 
     """ Settings """
 
-    def autosave(self):
+    def isAutoSave(self):
         return hou.getPreference('autoSave')
 
     def openPreferences(self):
@@ -112,12 +114,11 @@ class Session:
         hou.ui.reloadColorScheme()
         hou.ui.reloadViewportColorSchemes()
 
-    def reloadStudioUtils(self):
+    def reloadHC(self):
         hou.ui.reloadPackage(hou.homeHoudiniDirectory() + '/packages/houdini-studio-utils.json')
 
     def reloadHotkeys(self):
-        from .bindings import Bindings
-        Bindings().load()
+        HCBindings().load()
 
     def reloadKeycam(self):
         hou.ui.reloadViewerState('keycam')
diff --git a/python3.11libs/hc/status.py b/python3.11libs/hc/hcstatus.py
similarity index 96%
rename from python3.11libs/hc/status.py
rename to python3.11libs/hc/hcstatus.py
index 3f519a4..8791dcb 100644
--- a/python3.11libs/hc/status.py
+++ b/python3.11libs/hc/hcstatus.py
@@ -4,11 +4,11 @@ from PySide6.QtWidgets import QLabel, QVBoxLayout
 from PySide6.QtCore import Qt
 
 
-class Status(QtWidgets.QDialog):
+class HCStatus(QtWidgets.QDialog):
     def __init__(self):
         super(Dialog, self).__init__(hou.qt.mainWindow())
         self.resize(500, 200)
-        self.setWindowTitle("Status")
+        self.setWindowTitle("HC Status")
         self.setWindowFlags(Qt.Tool | Qt.WindowStaysOnTopHint)
 
         # Widgets
diff --git a/python3.11libs/hc/tab.py b/python3.11libs/hc/hctab.py
similarity index 69%
rename from python3.11libs/hc/tab.py
rename to python3.11libs/hc/hctab.py
index 8bbf2c0..9ae6bf9 100644
--- a/python3.11libs/hc/tab.py
+++ b/python3.11libs/hc/hctab.py
@@ -1,28 +1,27 @@
 import hou
 import types
+from .hcpane import HCPane
 
-
-class Tab():
-    def __init__(self, hou_tab):
-        self.hou_tab = hou_tab
+class HCTab():
+    def __init__(self, tab):
+        self.tab = tab
 
     #
     # Tab
     #
 
     def close(self):
-        self.hou_tab.close()
+        self.tab.close()
 
     def closeOtherTabs(self):
-        for tab in self.pane().allTabs():
+        for tab in self.hcPane().allTabs():
             if tab != self.tab:
                 tab.close()
 
-    def pane(self):
-        from .pane import Pane
-        return Pane(self.hou_tab.pane())
+    def hcPane(self):
+        return HCPane(self.tab.pane())
 
-    def type(self):
+    def hcType(self):
         return "Tab"
 
     def setTypeDetailsView(self):
@@ -49,21 +48,21 @@ class Tab():
     #
 
     def hasNetworkControls(self):
-        return self.hou_tab.hasNetworkControls()
+        return self.tab.hasNetworkControls()
 
     def isPin(self):
-        return self.hou_tab.isPin()
-    
+        return self.tab.isPin()
+
     def isShowingNetworkControls(self):
-        value = self.hou_tab.isShowingNetworkControls()
+        value = self.tab.isShowingNetworkControls()
         return value
 
     def setPin(self, value):
-        self.hou_tab.setPin(value)
-    
+        self.tab.setPin(value)
+
     def showNetworkControls(self, value):
-        self.hou_tab.showNetworkControls(value)
-    
+        self.tab.showNetworkControls(value)
+
     def toggleNetworkControls(self):
         if self.hasNetworkControls():
             self.showNetworkControls(not self.isShowingNetworkControls())
diff --git a/python3.11libs/hc/hcviewport.py b/python3.11libs/hc/hcviewport.py
new file mode 100644
index 0000000..2e5923a
--- /dev/null
+++ b/python3.11libs/hc/hcviewport.py
@@ -0,0 +1,18 @@
+import hou
+
+class HCViewport():
+    def __init__(self, viewport):
+        self.viewport = viewport
+
+    def displaySet(self):
+        settings = self.viewport.settings()
+        display_set = settings.displaySet(hou.displaySetType.DisplayModel)
+        return displaySet
+
+    def visualizers(self):
+        category = hou.viewportVisualizerCategory.Scene
+        vis_arr = hou.viewportVisualizers.visualizers(category)
+        return vis_arr
+
+    def setType(self, type):
+        self.viewport.changeType(type)
diff --git a/python3.11libs/hc/visualizers.py b/python3.11libs/hc/hcvisualizers.py
similarity index 95%
rename from python3.11libs/hc/visualizers.py
rename to python3.11libs/hc/hcvisualizers.py
index 0e8c3ab..165b0b5 100644
--- a/python3.11libs/hc/visualizers.py
+++ b/python3.11libs/hc/hcvisualizers.py
@@ -3,16 +3,16 @@ from fuzzyfinder import fuzzyfinder
 from PySide6 import QtCore
 from PySide6.QtWidgets import QListWidget, QListWidgetItem, QDialog, QLineEdit, QBoxLayout
 from PySide6.QtCore import Qt, QEvent
-from .session import Session
+from .hcsession import HCSession
 
 class Visualizers(QDialog):
     def __init__(self):
         super(VisualizerMenu, self).__init__(hou.qt.mainWindow())
 
         # Resources
-        self.session = Session()
-        self.viewport = self.session.viewport()
-        self.vis_arr = self.viewport.visualizers()
+        self.hc_session = HCSession()
+        self.hc_viewport = self.hc_session.currentViewport()
+        self.vis_arr = self.hc_viewport.visualizers()
 
         # Filter box
         self.filter_box = filterBox()
diff --git a/python3.11libs/hc/widgets.py b/python3.11libs/hc/hcwidgets.py
similarity index 100%
rename from python3.11libs/hc/widgets.py
rename to python3.11libs/hc/hcwidgets.py
diff --git a/python3.11libs/hc/pane.py b/python3.11libs/hc/pane.py
deleted file mode 100644
index f92166f..0000000
--- a/python3.11libs/hc/pane.py
+++ /dev/null
@@ -1,127 +0,0 @@
-import hou
-from .tab           import Tab
-from .pathtab       import PathTab
-from .sceneviewer   import SceneViewer
-from .networkeditor import NetworkEditor
-
-
-class Pane:
-    def __init__(self, hou_pane):
-        self.hou_pane = hou_pane
-
-
-    """ Pane """
-
-    def close(self):
-        for tab in self.allTabs():
-            tab.close()
-
-    def isMaximized(self):
-        return self.hou_pane.isMaximized()
-
-    def qtScreenGeometry(self):
-        return self.hou_pane.qtScreenGeometry()
-
-    def setIsMaximized(self, bool):
-        self.hou_pane.setIsMaximized(bool)
-
-    def toggleMaximize(self):
-        self.hou_pane.setIsMaximized(not self.isMaximized())
-
-
-    """ Split """
-
-    def contract(self):
-        fraction = round(self.splitFraction(), 3) + 0.1
-        self.setSplitFraction(fraction)
-        hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
-
-    def expand(self):
-        fraction = round(self.splitFraction(), 3) - 0.1
-        self.setSplitFraction(fraction)
-        hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
-
-    def isSplitMaximized(self):
-        return self.hou_pane.isSplitMaximized()
-
-    def setIsSplitMaximized(self, bool):
-        self.hou_pane.setIsSplitMaximized(bool)
-
-    def setRatioHalf(self):
-        self.setSplitFraction(0.5)
-
-    def setRatioQuarter(self):
-        self.setSplitFraction(0.25)
-
-    def setRatioThird(self):
-        self.setSplitFraction(0.333)
-
-    def setSplitFraction(self, fraction):
-        self.hou_pane.setSplitFraction(fraction)
-
-    def splitFraction(self):
-        return self.hou_pane.getSplitFraction()
-
-    def splitHorizontal(self):
-        self.hou_pane.splitHorizontally()
-
-    def splitRotate(self):
-        self.hou_pane.splitRotate()
-
-    def splitSwap(self):
-        self.hou_pane.splitSwap()
-
-    def splitVertical(self):
-        self.hou_pane.splitVertically()
-
-    def toggleSplitMaximized(self):
-        self.setIsSplitMaximized(not self.isSplitMaximized())
-
-
-    """ Interface """
-
-    def allTabs(self):
-        tabs = []
-        for hou_tab in self.hou_pane.tabs():
-            tabs.append(self.convertTab(hou_tab))
-        return tabs
-
-    def convertTab(self, hou_tab):
-        hou_type = hou_tab.type()
-        if hou_type == hou.paneTabType.SceneViewer:
-            return SceneViewer(hou_tab)
-        elif hou_type == hou.paneTabType.NetworkEditor:
-            return NetworkEditor(hou_tab)
-        elif hou_type == hou.paneTabType.DetailsView:
-            return PathTab(hou_tab)
-        elif hou_type == hou.paneTabType.Parm:
-            return PathTab(hou_tab)
-        else:
-            return Tab(hou_tab)
-
-    def currentTab(self):
-        hou_tab = self.hou_pane.currentTab()
-        return self.convertTab(hou_tab)
-
-    def isShowingTabs(self):
-        return self.hou_pane.isShowingPaneTabs()
-
-    def nextTab(self):
-        tabs = self.hou_pane.tabs()
-        tab = self.hou_pane.currentTab()
-        index = tabs.index(tab)
-        index = (index + 1) % len(tabs)
-        tabs[index].setIsCurrentTab()
-
-    def previousTab(self):
-        tabs = self.hou_pane.tabs()
-        tab = self.hou_pane.currentTab()
-        index = tabs.index(tab)
-        index = (index - 1) % len(tabs)
-        tabs[index].setIsCurrentTab()
-
-    def showTabs(self, value):
-        self.hou_pane.showPaneTabs(value)
-
-    def toggleTabs(self):
-        self.showTabs(not self.isShowingTabs())
diff --git a/python3.11libs/hc/prefs.py b/python3.11libs/hc/prefs.py
deleted file mode 100644
index af32f46..0000000
--- a/python3.11libs/hc/prefs.py
+++ /dev/null
@@ -1,3 +0,0 @@
-class Prefs:
-    def __init__(self):
-        self.node_color = (0.66, 0.66, 0.66)
diff --git a/python3.11libs/hc/viewport.py b/python3.11libs/hc/viewport.py
deleted file mode 100644
index 69bf803..0000000
--- a/python3.11libs/hc/viewport.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import hou
-
-
-class Viewport():
-    def __init__(self, hou_viewport):
-        self.hou_viewport = hou_viewport
-        return
-
-    def visualizers(self):
-        category = hou.viewportVisualizerCategory.Scene
-        vis_arr = hou.viewportVisualizers.visualizers(category)
-        return vis_arr
-
-    def setType(self, type):
-        self.hou_viewport.changeType(type)
diff --git a/python3.11libs/nodegraphhooks.py b/python3.11libs/nodegraphhooks.py
index d64c892..c44526c 100755
--- a/python3.11libs/nodegraphhooks.py
+++ b/python3.11libs/nodegraphhooks.py
@@ -30,10 +30,10 @@ def createEventHandler(uievent, pending_actions):
             'H': lambda: editor.translateView('left'),
             'L': lambda: editor.translateView('right'),
             # Move node
-            'Ctrl+K': lambda: editor.translateNodes('up'),

-            'Ctrl+J': lambda: editor.translateNodes('down'),

-            'Ctrl+H': lambda: editor.translateNodes('left'),

-            'Ctrl+L': lambda: editor.translateNodes('right'),

+            'Alt+K': lambda: editor.translateNodes('up'),

+            'Alt+J': lambda: editor.translateNodes('down'),

+            'Alt+H': lambda: editor.translateNodes('left'),

+            'Alt+L': lambda: editor.translateNodes('right'),

             # Organize
             'Ctrl+Shift+A': editor.arrangeNodes,
             # Grid
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..0c0fc57
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,45 @@
+Interface
+------
+* Color scheme (wip)
+* Hidden toggleable elements
+* Default desktop layout
+
+Node Graph
+----------
+* Default node shape (wip)
+* Keyboard navigation (wip)
+* Automated layout algorithm (wip)
+
+Scene Viewer
+------------
+* keycam navigator (wip)
+
+HC Panel
+--------
+* Contextual to pane tabs
+* Resize panes
+* Tab navigation (wip)
+
+Immutable Methods
+-----------------
+* Parametric modeling (wip)
+
+GEM (General Export Methods)
+----------------------------
+* Manufacturing tools
+
+Developer
+---------
+* Simulation tools (wip)
+
+Python Package
+--------------
+* hc (hou-control)
+
+Startup
+-------
+* Option to open most recent file
+
+Configuration
+-------------
+* settings.json (wip)
diff --git a/scripts/OnCreated.py b/scripts/OnCreated.py
index 50fa6a0..1e84102 100644
--- a/scripts/OnCreated.py
+++ b/scripts/OnCreated.py
@@ -8,6 +8,6 @@ node = Node(kwargs['node'])
 
 # Force the shape to your desired JSON name
 # (e.g., "rect", "circle", or your custom "my_shape")
-# node.setUserData("nodeshape", "squared")
+node.setUserData("nodeshape", "rect")
 node.setColor(hou.Color(Prefs().node_color))
 # snapToGrid(node)
diff --git a/scripts/hotkeys_assign.json b/scripts/hotkeys_assign.json
new file mode 100644
index 0000000..40eeadc
--- /dev/null
+++ b/scripts/hotkeys_assign.json
@@ -0,0 +1,65 @@
+{
+    "assignments": {
+        "h.hc_panel":                             "alt+shift+d",
+        "h.stow_shelf":                           "ctrl+]",
+        "h.hc_session_keycam":                    "shift+k",
+        "h.pane.shelf":                           "ctrl+[",
+        "h.pane.nexttab":                         "ctrl+tab",
+        "h.pane.prevtab":                         "ctrl+shift+tab",
+        "h.pane.gview.refplane":                  "shift+g",
+        "h.pane.gview.state.view.home_selection": "shift+s",
+        "h.pane.parms.edit_expression":           "alt+e",
+        "h.pane.editparms.selectall":             "alt+h",
+        "h.pane.wsheet.bypass_mode":              "q",
+        "h.pane.wsheet.doautomovenodes":          "ctrl+pad9",
+        "h.pane.wsheet.up":                       "ctrl+k",
+        "h.pane.wsheet.down":                     "ctrl+j",
+        "h.pane.wsheet.left":                     "ctrl+h",
+        "h.pane.wsheet.right":                    "ctrl+l",
+        "h.pane.wsheet.drop_on_wire_mode":        "pad8",
+        "h.pane.wsheet.flag2_mode":               "w",
+        "h.pane.wsheet.flag3_mode":               "e",
+        "h.pane.wsheet.home_selected":            "shift+s",
+        "h.pane.wsheet.jump_mark_1":              "pad1",
+        "h.pane.wsheet.jump_mark_2":              "pad2",
+        "h.pane.wsheet.jump_mark_3":              "pad3",
+        "h.pane.wsheet.jump_mark_4":              "pad4",
+        "h.pane.wsheet.jump_mark_5":              "pad5",
+        "h.pane.wsheet.node_quick_nav":           "ctrl+f",
+        "h.pane.wsheet.rename_node":              "ctrl+r",
+        "h.pane.wsheet.set_mark_1":               "ctrl+pad1",
+        "h.pane.wsheet.set_mark_2":               "ctrl+pad2",
+        "h.pane.wsheet.set_mark_3":               "ctrl+pad3",
+        "h.pane.wsheet.set_mark_4":               "ctrl+pad4",
+        "h.pane.wsheet.set_mark_5":               "ctrl+pad5",
+        "h.pane.wsheet.select":                   "ctrl+a",
+        "h.pane.textport.up":                     "ctrl+p",
+        "h.pane.textport.down":                   "ctrl+n",
+        "h.pane.textport.next":                   "ctrl+f",
+        "h.pane.textport.prev":                   "ctrl+b",
+        "h.pane.textport.top":                    "ctrl+a",
+        "h.pane.textport.bottom":                 "ctrl+e",
+        "h.pane.textport.nextword":               "alt+f",
+        "h.pane.textport.pageup":                 "alt+v",
+        "h.pane.textport.pagedown":               "ctrl+v",
+        "h.pane.textport.firstline":              "ctrl+shift+,",
+        "h.pane.textport.lastline":               "ctrl+shift+.",
+        "h.pane.textport.jump_to_line":           "alt+g",
+        "h.pane.textport.selectup":               "ctrl+shift+p",
+        "h.pane.textport.selectdown":             "ctrl+shift+n",
+        "h.pane.textport.selectnext":             "ctrl+shift+f",
+        "h.pane.textport.selectprev":             "ctrl+shift+b",
+        "h.pane.textport.selectbottom":           "ctrl+shift+e",
+        "h.pane.textport.selecttop":              "ctrl+shift+a",
+        "h.pane.textport.selectnextword":         "alt+shift+f",
+        "h.pane.textport.toggle_comment":         "ctrl+/",
+        "inputfield.up":                          "ctrl+p",
+        "inputfield.down":                        "ctrl+n",
+        "inputfield.next":                        "ctrl+f",
+        "inputfield.prev":                        "ctrl+b",
+        "inputfield.next_word":                   "alt+f",
+        "inputfield.prev_word":                   "alt+b",
+        "inputfield.end":                         "ctrl+e",
+        "inputfield.home":                        "ctrl+a"
+    }
+}
diff --git a/scripts/hotkeys_clear.json b/scripts/hotkeys_clear.json
new file mode 100644
index 0000000..3708672
--- /dev/null
+++ b/scripts/hotkeys_clear.json
@@ -0,0 +1,132 @@
+{
+    "commands": [
+        "deskmgr.new",
+        "deskmgr.save",
+        "h.add_key",
+        "h.aliases",
+        "h.audio_panel",
+        "h.auto_key",
+        "h.cache_manager",
+        "h.channeleditor",
+        "h.clear_cop_caches",
+        "h.comp_project_manager",
+        "h.context_help",
+        "h.desktop_mgr",
+        "h.find",
+        "h.global_animation_options",
+        "h.mat_palette",
+        "h.merge",
+        "h.new",
+        "h.next_key",
+        "h.open",
+        "h.perf_monitor",
+        "h.python_shell",
+        "h.textport",
+        "h.pane.clone",
+        "h.pane.closetab",
+        "h.pane.copytab",
+        "h.pane.edit_bookmark",
+        "h.pane.editpathastext",
+        "h.pane.link_minus",
+        "h.pane.link_plus",
+        "h.pane.nexttab",
+        "h.pane.prevtab",
+        "h.pane.to_cop_view",
+        "h.pane.to_geosheet",
+        "h.pane.to_ipr_viewer",
+        "h.pane.to_mat_palette",
+        "h.pane.to_net",
+        "h.pane.to_old_net",
+        "h.pane.to_parm",
+        "h.pane.to_scene_view",
+        "h.pane.to_textport",
+        "h.pane.to_treeview",
+        "h.pane.bundle.appbundle",
+        "h.pane.bundle.duplicate",
+        "h.pane.chedit.bsave",
+        "h.pane.chedit.load",
+        "h.pane.chedit.save",
+        "h.pane.chedit.scroll_to_current_frame",
+        "h.pane.chedit.show_groups",
+        "h.pane.chedit.show_layers",
+        "h.pane.chedit.show_parmbox",
+        "h.pane.chlist.parmbox.show_filter",
+        "h.pane.group.addgroup",
+        "h.pane.group.equals",
+        "h.pane.group.selectall",
+        "h.pane.group.togpin",
+        "h.pane.group.togpinall",
+        "h.pane.gview.increase_subd",
+        "h.pane.gview.decrease_subd",
+        "h.pane.gview.delete",
+        "h.pane.gview.dockhudhandles",
+        "h.pane.gview.operator_menu_branch",
+        "h.pane.gview.state.view.home_selection",
+        "h.pane.gview.repeat_current",
+        "h.pane.gview.repeat_current_branch",
+        "h.pane.gview.restore_prevcam",
+        "h.pane.gview.selectstylebox",
+        "h.pane.gview.selectstylelaser",
+        "h.pane.gview.selectstylelasso",
+        "h.pane.gview.handle.remove_keyframe",
+        "h.pane.gview.handle.set_keyframe",
+        "h.pane.gview.handle.agentcollisionlayer.boxhandle",
+        "h.pane.gview.handle.agentcollisionlayer.orientationhandle",
+        "h.pane.gview.handle.agentconfigurejoints.conehandle",
+        "h.pane.gview.handle.agentconfigurejoins.childrotationhandle",
+        "h.pane.gview.state.volatile_chmodify",
+        "h.pane.textport.editor",
+        "h.pane.textport.selectall",
+        "h.pane.textport.zoom_in",
+        "h.pane.textport.zoom_out",
+        "h.pane.textport.zoom_reset",
+        "h.pane.wsheet.change_wire_style",
+        "h.pane.wsheet.add_image",
+        "h.pane.wsheet.add_postit",
+        "h.pane.wsheet.addfileop",
+        "h.pane.wsheet.allowdroponwire",
+        "h.pane.wsheet.batch_rename",
+        "h.pane.wsheet.bypass_mode",
+        "h.pane.wsheet.color_palette",
+        "h.pane.wsheet.doautomovenodes",
+        "h.pane.wsheet.dosnapping",
+        "h.pane.wsheet.expose",
+        "h.pane.wsheet.flag1_mode",
+        "h.pane.wsheet.flag2_mode",
+        "h.pane.wsheet.flag3_mode",
+        "h.pane.wsheet.flag4_mode",
+        "h.pane.wsheet.home",
+        "h.pane.wsheet.home_selection",
+        "h.pane.wsheet.up",
+        "h.pane.wsheet.down",
+        "h.pane.wsheet.left",
+        "h.pane.wsheet.right",
+        "h.pane.wsheet.edit_images",
+        "h.pane.wsheet.layout",
+        "h.pane.wsheet.layout_all",
+        "h.pane.wsheet.layout_mode",
+        "h.pane.wsheet.maximize",
+        "h.pane.wsheet.maximize_adjust",
+        "h.pane.wsheet.minimize",
+        "h.pane.wsheet.minimize_adjust",
+        "h.pane.wsheet.mode_switch",
+        "h.pane.wsheet.node_quick_nav",
+        "h.pane.wsheet.open_display_options",
+        "h.pane.wsheet.open_groups",
+        "h.pane.wsheet.open_treeview",
+        "h.pane.wsheet.opmenu.flag_debug",
+        "h.pane.wsheet.rename_node",
+        "h.pane.wsheet.scope_chans",
+        "h.pane.wsheet.select",
+        "h.pane.wsheet.select_mode",
+        "h.pane.wsheet.snap_netbox_bounds",
+        "h.pane.wsheet.stitch_mode",
+        "h.pane.wsheet.zoom_in",
+        "h.pane.wsheet.zoom_out",
+        "h.playbar.next_bookmark",
+        "h.playbar.prev_bookmark",
+        "h.playbar.show_range",
+        "inputfield.context_help",
+        "inputfield.editor"
+    ]
+}
diff --git a/scripts/settings.json b/scripts/settings.json
index af964cb..f5f44ab 100644
--- a/scripts/settings.json
+++ b/scripts/settings.json
@@ -23,5 +23,7 @@
             "ow": 1,
             "dist": 1
         }
-    }
+    },
+    "node_graph": {
+        "node_shape": "rect"
 }
diff --git a/viewer_states/keycam.py b/viewer_states/keycam.py
index 3b0a3b2..ddd88fd 100644
--- a/viewer_states/keycam.py
+++ b/viewer_states/keycam.py
@@ -150,7 +150,7 @@ def createViewerStateTemplate():
     )
 
 
-    """ Context menu """
+    """ Context Menu """
 
     menu = hou.ViewerStateMenu('keycam_menu', 'Keycam Menu')
     menu.addActionItem('frame', 'Frame')
@@ -187,7 +187,7 @@ class State(object):
         self.options = {
             'center_on_geo': 1,
             'lock_cam':      1,
-            'reset':         1
+            'reset':         0
         }
 
         """ Check for cam node """
@@ -218,12 +218,9 @@ class State(object):
         self.scene_viewer = SceneViewer(self.hou_scene_viewer)
         self.cam = Cam(self.cam_node, self.hou_scene_viewer)
         self.guides = Guides(self)
-
         """ Prevent exiting state when current node changes """
         self.kwargs['state_flags']['exit_on_node_select'] = False
-
         self.guides.update()
-
         self.hud = Hud(self)
         self.hud.update()