+
+function deleteLock {
+    if ! rmdir /tmp/$(basename $0).lock; then
+       scottyerror "Could not delete lockfile /tmp/$(basename $0).lock!"
+    fi
+}
+
+function prepare {
+    scottyinfo "Preparing for sync"
+}
+
+function cleanup_abort {
+    scottyinfo "No cleanup_abort function was defined."
+}
+
+function _cleanup_abort {
+    scottyerror "Caught exit signal! Cleaning up..."
+
+    cleanup_abort
+
+    if [ $(jobs -p) ]; then
+       scottyerror TERMinating remaining child processes...
+       kill $(jobs -p)
+    fi
+    deleteLock
+    exit
+}
+
+function prepare {
+    scottyinfo "No prepare function was defined."
+}
+
+function _prepare {
+    prepare
+}
+
+function cleanup_normal {
+    scottyinfo "No cleanup_normal function was defined."
+}
+
+function _cleanup_normal {
+    cleanup_normal
+}
+
+function backmeupscotty {
+    while getopts "qn:" opt; do
+       case $opt in
+           q)
+               exec > /dev/null
+               ;;
+           n)
+               BACKUP_RUNEVERYNTHDAY=$OPTARG
+               ;;
+       esac
+    done
+
+    if ! isIncompleteOrNthDay; then
+       scottyinfo "This is not the nth day and no incomplete backup exists."
+       exit 0
+    fi
+
+    trap _cleanup_abort EXIT
+
+    _prepare
+    scottysync
+    _cleanup_normal
+
+    trap deleteLock EXIT
+}
+
+if ! mkdir /tmp/$(basename $0).lock; then
+    scottyerror "Another instance of $(basename $0) is still running!"
+    exit 1
+else
+    trap deleteLock EXIT
+fi