diff --git a/examples/remove_add_components.py b/examples/remove_add_components.py
new file mode 100644
index 0000000000000000000000000000000000000000..a2cdea8d88ffe000c6b66ee3ac3af6df18326492
--- /dev/null
+++ b/examples/remove_add_components.py
@@ -0,0 +1,54 @@
+# Example showing how to remove and add components with Pykat.
+# Commands that get parsed into a pykat object can be interacted 
+# with in a object orientated manner. So you can call kat.component.remove()
+# to remove it for example.
+#
+# This example shows how a kat object can be manipulated when pykat objects
+# are available.
+#
+# If the a Finesse command hasn't been implemented as a pykat object yet
+# the command will be added as an "extra line", these can still be removed
+# and added to using the kat.removeLine and kat.addLine commands.
+#
+# Daniel Brown 17/12/14
+
+import pykat
+from pykat.components import *
+
+kat = pykat.finesse.kat()
+
+kat.parseCommands("""
+m m1 0.9 0.1 0 n1 n2
+s s1 1 n2 n3
+m m2 0.9 0.1 0 n3 n4
+""")
+
+print "Before..."
+print "".join(kat.generateKatScript())
+
+kat.s1.remove()
+
+print "After remove..."
+print "".join(kat.generateKatScript())
+
+# Adding in with commands
+kat.parseCommands("""
+s s2 1 n2 n2a
+m m3 0.9 0.1 0 n2a n3a
+s s3 1 n3a n3
+""")
+
+print "After add with commands..."
+print "".join(kat.generateKatScript())
+
+kat.s2.remove()
+kat.s3.remove()
+kat.m3.remove()
+
+# Adding in with objects
+kat.add(space("s2", "n2", "n2a", L=1))
+kat.add(space("s3", "n3", "n3a", L=1))
+kat.add(mirror("m3", "n2a", "n3a", R=0.9, T=0.1, phi=0))
+
+print "After add with objects..."
+print "".join(kat.generateKatScript())
\ No newline at end of file