diff --git a/SBOLCanvasFrontend/src/app/glyph-menu/glyph-menu.component.html b/SBOLCanvasFrontend/src/app/glyph-menu/glyph-menu.component.html
index f3408dfc..67b57a2d 100644
--- a/SBOLCanvasFrontend/src/app/glyph-menu/glyph-menu.component.html
+++ b/SBOLCanvasFrontend/src/app/glyph-menu/glyph-menu.component.html
@@ -78,6 +78,26 @@
+
+ 0">
+
+
+ Interaction Nodes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/dissociation.xml b/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/dissociation.xml
new file mode 100644
index 00000000..34b9088e
--- /dev/null
+++ b/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/dissociation.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/process.xml b/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/process.xml
new file mode 100644
index 00000000..c1848014
--- /dev/null
+++ b/SBOLCanvasFrontend/src/assets/glyph_stencils/interaction_nodes/process.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/xmlFixer.py b/resources/xmlFixer.py
index 4ca0b515..c0ddcb63 100755
--- a/resources/xmlFixer.py
+++ b/resources/xmlFixer.py
@@ -23,6 +23,8 @@
INF = 1000
+SHIFT_EXCLUDE_LIST =['rx','ry','x-axis-rotation'] #they contain x and y, but should only be scaled
+
def main():
args = parse_args()
@@ -161,7 +163,7 @@ def shift_x_or_y_direction(shape, distance, x_or_y):
for child in path.getchildren():
for key, val in child.attrib.items():
val = float(val)
- if x_or_y in key.lower():
+ if x_or_y in key.lower() and key.lower() not in SHIFT_EXCLUDE_LIST:
val += distance
child.attrib[key] = str(val)