diff --git a/ci/develop-common.sh b/ci/develop-common.sh
new file mode 100755
index 0000000000000000000000000000000000000000..31e4801e3f4f037630016569b279fb472d592fc3
--- /dev/null
+++ b/ci/develop-common.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ -n "$VIRTUAL_ENV" ]; then
+  OPTIONS=--script-dir=$VIRTUAL_ENV/bin/
+  echo $OPTIONS
+else
+  OPTIONS=
+fi
+
+. ./ci/config
diff --git a/ci/install.sh b/ci/install.sh
index e949a541e6485f089e51585375fb528cedf9e1e1..ccf0be7ec2479f72548fea3ff51cbfecbee58823 100755
--- a/ci/install.sh
+++ b/ci/install.sh
@@ -1,17 +1,12 @@
 #!/bin/sh
 
-if [ -n "$VIRTUAL_ENV" ]; then
-  OPTIONS=--script-dir=$VIRTUAL_ENV/bin/
-  echo $OPTIONS
-else
-  OPTIONS=
-fi
-
+# `cd` to the top dir of synnefo repository
 set -e
 cwd=`dirname $0`
 cd "$cwd"/..
 
-. ./ci/config
+# Do common tasks for install/uninstall purposes
+. ./ci/develop-common.sh
 
 # Update version
 devflow-update-version
diff --git a/ci/uninstall.sh b/ci/uninstall.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ee17419fd8b258554f04c1fd27e44ca2ae071f1f
--- /dev/null
+++ b/ci/uninstall.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# `cd` to the top dir of synnefo repository
+set -e
+cwd=`dirname $0`
+cd "$cwd"/..
+
+# Do common tasks for install/uninstall purposes
+. ./ci/develop-common.sh
+
+for project in $PROJECTS; do
+  cd $project
+  python setup.py develop --uninstall $OPTIONS
+  cd -
+done