diff --git a/lib/database b/lib/database
index ebab333..79b77a2 100644
--- a/lib/database
+++ b/lib/database
@@ -42,6 +42,11 @@
 # This is not an error as multi-node installs will do this on the compute nodes
 
 
+# Get rid of everything enough to cleanly change database backends
+function cleanup_database {
+    cleanup_database_$DATABASE_TYPE
+}
+
 # Set the database type based on the configuration
 function initialize_database_backends {
     for backend in $DATABASE_BACKENDS; do
diff --git a/lib/databases/mysql b/lib/databases/mysql
index ec65c36..0633ab0 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -10,6 +10,24 @@
 
 register_database mysql
 
+# Get rid of everything enough to cleanly change database backends
+function cleanup_database_mysql {
+    if is_ubuntu; then
+        # Get ruthless with mysql
+        stop_service $MYSQL
+        sudo aptitude purge -y ~nmysql-server
+        sudo rm -rf /var/lib/mysql
+        return
+    elif is_fedora; then
+        MYSQL=mysqld
+    elif is_suse; then
+        MYSQL=mysql
+    else
+        return
+    fi
+    stop_service $MYSQL
+}
+
 function recreate_database_mysql {
     local db=$1
     local charset=$2
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 7d4a6c5..efc206f 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -10,6 +10,20 @@
 
 register_database postgresql
 
+# Get rid of everything enough to cleanly change database backends
+function cleanup_database_postgresql {
+    stop_service postgresql
+    if is_ubuntu; then
+        # Get ruthless with mysql
+        sudo aptitude purge -y  ~npostgresql
+        return
+    elif is_fedora; then
+        uninstall_package postgresql-server
+    else
+        return
+    fi
+}
+
 function recreate_database_postgresql {
     local db=$1
     local charset=$2
diff --git a/lib/glance b/lib/glance
index 9ec2112..edf6982 100644
--- a/lib/glance
+++ b/lib/glance
@@ -59,8 +59,7 @@
 function cleanup_glance() {
     # kill instances (nova)
     # delete image files (glance)
-    # This function intentionally left blank
-    :
+    sudo rm -rf $GLANCE_CACHE_DIR $GLANCE_IMAGE_DIR $GLANCE_AUTH_CACHE_DIR
 }
 
 # configure_glanceclient() - Set config files, create data dirs, etc
diff --git a/lib/nova b/lib/nova
index 906a635..23346b7 100644
--- a/lib/nova
+++ b/lib/nova
@@ -106,6 +106,8 @@
         # Clean out the instances directory.
         sudo rm -rf $NOVA_INSTANCES_PATH/*
     fi
+
+    sudo rm -rf $NOVA_STATE_PATH $NOVA_AUTH_CACHE_DIR
 }
 
 # configure_novaclient() - Set config files, create data dirs, etc
@@ -308,9 +310,6 @@
                 sudo chown -R $STACK_USER $NOVA_INSTANCES_PATH
             fi
         fi
-
-        # Clean up old instances
-        cleanup_nova
     fi
 }
 
diff --git a/lib/quantum b/lib/quantum
index 66360d4..862ba84 100644
--- a/lib/quantum
+++ b/lib/quantum
@@ -211,8 +211,6 @@
     fi
 
     _configure_quantum_debug_command
-
-    _cleanup_quantum
 }
 
 function create_nova_conf_quantum() {
@@ -385,9 +383,9 @@
     fi
 }
 
-# _cleanup_quantum() - Remove residual data files, anything left over from previous
+# cleanup_quantum() - Remove residual data files, anything left over from previous
 # runs that a clean run would need to clean up
-function _cleanup_quantum() {
+function cleanup_quantum() {
     :
 }
 
diff --git a/lib/rpc_backend b/lib/rpc_backend
index 02614ea..bbd51f0 100644
--- a/lib/rpc_backend
+++ b/lib/rpc_backend
@@ -43,6 +43,38 @@
     fi
 }
 
+# clean up after rpc backend - eradicate all traces so changing backends
+# produces a clean switch
+function cleanup_rpc_backend {
+    if is_service_enabled rabbit; then
+        # Obliterate rabbitmq-server
+        uninstall_package rabbitmq-server
+        sudo killall epmd
+        if is_ubuntu; then
+            # And the Erlang runtime too
+            sudo aptitude purge -y ~nerlang
+        fi
+    elif is_service_enabled qpid; then
+        if is_fedora; then
+            uninstall_package qpid-cpp-server-daemon
+        elif is_ubuntu; then
+            uninstall_package qpidd
+        else
+            exit_distro_not_supported "qpid installation"
+        fi
+    elif is_service_enabled zeromq; then
+        if is_fedora; then
+            uninstall_package zeromq python-zmq
+        elif is_ubuntu; then
+            uninstall_package libzmq1 python-zmq
+        elif is_suse; then
+            uninstall_package libzmq1 python-pyzmq
+        else
+            exit_distro_not_supported "zeromq installation"
+        fi
+    fi
+}
+
 # install rpc backend
 function install_rpc_backend() {
     if is_service_enabled rabbit; then
diff --git a/lib/swift b/lib/swift
index 5c4ceab..04a54c3 100644
--- a/lib/swift
+++ b/lib/swift
@@ -388,9 +388,11 @@
 # stop_swift() - Stop running processes (non-screen)
 function stop_swift() {
     # screen normally killed by unstack.sh
-    if type -p swift-init >/dev/null;then
+    if type -p swift-init >/dev/null; then
         swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
     fi
+    # Dump the proxy server
+    sudo pkill -f swift-proxy-server
 }
 
 # Restore xtrace
