diff --git a/src/vmm_mad/remotes/kvm/cancel b/src/vmm_mad/remotes/kvm/cancel
index 3943889905..cbcdad3eb7 100755
--- a/src/vmm_mad/remotes/kvm/cancel
+++ b/src/vmm_mad/remotes/kvm/cancel
@@ -21,13 +21,5 @@ source $(dirname $0)/../../scripts_common.sh
 
 deploy_id=$1
 
-virsh --connect $LIBVIRT_URI destroy $deploy_id
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not destroy $deploy_id"
-    exit $error_code
-fi
+exec_and_log "virsh --connect $LIBVIRT_URI destroy $deploy_id" \
+    "Could not destroy $deploy_id"
diff --git a/src/vmm_mad/remotes/kvm/migrate b/src/vmm_mad/remotes/kvm/migrate
index 6cc4c85428..2dbdf8a521 100755
--- a/src/vmm_mad/remotes/kvm/migrate
+++ b/src/vmm_mad/remotes/kvm/migrate
@@ -22,13 +22,5 @@ source $(dirname $0)/../../scripts_common.sh
 deploy_id=$1
 dest_host=$2
 
-virsh --connect $LIBVIRT_URI migrate --live $deploy_id $QEMU_PROTOCOL://$dest_host/system
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not migrate $deploy_id to $dest_host"
-    exit $error_code
-fi
+exec_and_log "virsh --connect $LIBVIRT_URI migrate --live $deploy_id $QEMU_PROTOCOL://$dest_host/system" \
+    "Could not migrate $deploy_id to $dest_host"
diff --git a/src/vmm_mad/remotes/kvm/restore b/src/vmm_mad/remotes/kvm/restore
index da64b18c10..761a82227a 100755
--- a/src/vmm_mad/remotes/kvm/restore
+++ b/src/vmm_mad/remotes/kvm/restore
@@ -21,13 +21,5 @@ source $(dirname $0)/../../scripts_common.sh
 
 file=$1
 
-virsh --connect $LIBVIRT_URI restore $file
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not restore from $file"
-    exit $error_code
-fi
+exec_and_log "virsh --connect $LIBVIRT_URI restore $file" \
+    "Could not restore from $file"
diff --git a/src/vmm_mad/remotes/kvm/save b/src/vmm_mad/remotes/kvm/save
index 39dc8fdf09..4b09cf7fc4 100755
--- a/src/vmm_mad/remotes/kvm/save
+++ b/src/vmm_mad/remotes/kvm/save
@@ -27,13 +27,5 @@ if [ ! -f $file ]; then
     chmod 666 $file
 fi
 
-virsh --connect $LIBVIRT_URI save $deploy_id $file
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not save $deploy_id to $file"
-    exit $error_code
-fi
+exec_and_log "virsh --connect $LIBVIRT_URI save $deploy_id $file" \
+    "Could not save $deploy_id to $file"
diff --git a/src/vmm_mad/remotes/xen/cancel b/src/vmm_mad/remotes/xen/cancel
index 9f6928d5cc..4beab6b21c 100755
--- a/src/vmm_mad/remotes/xen/cancel
+++ b/src/vmm_mad/remotes/xen/cancel
@@ -21,13 +21,5 @@ source $(dirname $0)/../../scripts_common.sh
 
 deploy_id=$1
 
-$XM_CANCEL $deploy_id
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not destroy $deploy_id"
-    exit $error_code
-fi
+exec_and_log "$XM_CANCEL $deploy_id" \
+    "Could not destroy $deploy_id"
diff --git a/src/vmm_mad/remotes/xen/migrate b/src/vmm_mad/remotes/xen/migrate
index 1e1a915afe..6458d3b542 100755
--- a/src/vmm_mad/remotes/xen/migrate
+++ b/src/vmm_mad/remotes/xen/migrate
@@ -22,13 +22,5 @@ source $(dirname $0)/../../scripts_common.sh
 deploy_id=$1
 dest_host=$2
 
-$XM_MIGRATE $deploy_id $dest_host
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not migrate $deploy_id to $dest_host"
-    exit $error_code
-fi
+exec_and_log "$XM_MIGRATE $deploy_id $dest_host" \
+    "Could not migrate $deploy_id to $dest_host"
diff --git a/src/vmm_mad/remotes/xen/restore b/src/vmm_mad/remotes/xen/restore
index c8d2480800..aa4bc0402b 100755
--- a/src/vmm_mad/remotes/xen/restore
+++ b/src/vmm_mad/remotes/xen/restore
@@ -21,14 +21,6 @@ source $(dirname $0)/../../scripts_common.sh
 
 file=$1
 
-$XM_RESTORE $file
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not restore from $file"
-    exit $error_code
-fi
+exec_and_log "$XM_RESTORE $file" \
+    "Could not restore from $file"
 
diff --git a/src/vmm_mad/remotes/xen/save b/src/vmm_mad/remotes/xen/save
index 906f8c3965..7be9ce93cc 100755
--- a/src/vmm_mad/remotes/xen/save
+++ b/src/vmm_mad/remotes/xen/save
@@ -22,13 +22,5 @@ source $(dirname $0)/../../scripts_common.sh
 deploy_id=$1
 file=$2
 
-$XM_SAVE $deploy_id $file
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not save $deploy_id to $file"
-    exit $error_code
-fi
+exec_and_log "$XM_SAVE $deploy_id $file" \
+    "Could not save $deploy_id to $file"
diff --git a/src/vmm_mad/remotes/xen/shutdown b/src/vmm_mad/remotes/xen/shutdown
index 4effaa375e..d6b240672c 100755
--- a/src/vmm_mad/remotes/xen/shutdown
+++ b/src/vmm_mad/remotes/xen/shutdown
@@ -25,16 +25,8 @@ function gdm {
     $XM_LIST | grep "$deploy_id "
 }
 
-$XM_SHUTDOWN $deploy_id
-
-error_code=$?
-
-if [ "x$?" = "x0" ]; then
-    exit $error_code
-else
-    error_message "Could not shutdown $deploy_id"
-    exit $error_code
-fi
+exec_and_log "$XM_SHUTDOWN $deploy_id" \
+    "Could not shutdown $deploy_id"
 
 OUT=$(gdm)