diff --git a/ChangeLog b/ChangeLog
index 036675e2b0cdc14e6e86c5d81135cf1868d13351..bc8a50de6c2b4923ce08521793b61d44ff0c03a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -19,6 +19,9 @@ version 0.9.4 -- unreleased
 	Added rsnap handler:
 	 . rotated rsync snapshops
 	 . code from paulv@bikkel.org
+	Added rub handler: 
+	 . alternative to rsnap
+	 . code from rhatto@riseup.net
 	mysql:
 	 . Fixed improper use of $vuserhome (Closes: #351083)
 	 . Fixed erroneous removal of tmpfile when it didn't exit
@@ -42,6 +45,11 @@ version 0.9.4 -- unreleased
 	 . Fixed improper include/exclude symlink dereference
 	 . Removed overzealous vsnames check
 	 . Now works if testconnect=no and if $test is not defined.
+	 . add $sshoptions config parameter in [dest] section of config so
+	   connections to ports other than 22 can be made by adding the
+	   following to the top of the handler config:
+	   options = --remote-schema 'ssh -p REMOTE-PORT -C %s rdiff-backup
+	   --server'
 	dup:
 	 . Symlink and globbing support enhancement and clarification: for
 	   a given include/exclude/vsinclude statement, dup handler now
@@ -57,6 +65,8 @@ version 0.9.4 -- unreleased
 	 . Added warning if no devices were found (thanks Ranier Zocholl)
 	ldap:
 	 . Compress now happens in-line to save some disk space (Closes: #370778)
+	makecd:
+	 . Added nicelevel option (thanks rhatto)
     lib changes
 	vserver:
 	 . init_vservers: fixed Debian bug #351083 (improper readlink syntax)
diff --git a/handlers/makecd b/handlers/makecd
index b176994e9f02531a4486c4a693ed3ac8ce4ba7f8..cdfa6b1a631535d13666cb30624440241eca9a6e 100644
--- a/handlers/makecd
+++ b/handlers/makecd
@@ -10,6 +10,7 @@ getconf system no
 getconf isoonly yes
 getconf imagefile backup.iso
 getconf device
+getconf nicelevel 0
 
 # define needed executables:
 MKISOFS="/usr/bin/mkisofs"
@@ -35,7 +36,7 @@ if [ "$isoonly" == "no" ]; then
 fi
 
 outputfile="$backupdir/$imagefile"
-execstr="$MKISOFS --quiet -R -o $outputfile "
+execstr="nice -n $nicelevel $MKISOFS --quiet -R -o $outputfile "
 
 str=""
 # excludes
diff --git a/handlers/rdiff b/handlers/rdiff
index 8faca9d654a827b7d447c48736c1ef1515e7b302..79577c655ebd9c9c76e1b77d993281e18ff84ba5 100644
--- a/handlers/rdiff
+++ b/handlers/rdiff
@@ -17,8 +17,8 @@ function test_connection() {
 	fi
 	local user=$1
 	local host=$2
-	debug "ssh -o PasswordAuthentication=no $host -l $user 'echo -n 1'"
-	local ret=`ssh -o PasswordAuthentication=no $host -l $user 'echo -n host is alive'`
+	debug "ssh $sshoptions -o PasswordAuthentication=no $host -l $user 'echo -n 1'"
+	local ret=`ssh $sshoptions -o PasswordAuthentication=no $host -l $user 'echo -n host is alive'`
 	if echo $ret | grep "host is alive"; then
 		debug "Connected to $host as $user successfully"
 	else
@@ -36,8 +36,8 @@ function get_version() {
 	else
 		local user=$1
 		local host=$2
-		debug "ssh $host -l $user '$RDIFFBACKUP -V'"
-		echo `ssh $host -l $user "$RDIFFBACKUP -V | grep rdiff-backup"`
+		debug "ssh $sshoptions $host -l $user '$RDIFFBACKUP -V'"
+		echo `ssh $sshoptions $host -l $user "$RDIFFBACKUP -V | grep rdiff-backup"`
 	fi
 }
 
@@ -89,6 +89,7 @@ destdir=${destdir%/}
 getconf type; desttype=$type
 getconf user; destuser=$user
 getconf host; desthost=$host
+getconf sshoptions
 check_consistency "destination" "$type" "$user" "$host"
 
 ### CHECK CONFIG ###
@@ -148,7 +149,7 @@ if [ "`echo $keep | tr -d 0-9`" == "" ]; then
 	keep="${keep}D"
 fi
 
-removestr="$RDIFFBACKUP --force --remove-older-than $keep "
+removestr="$RDIFFBACKUP $options --force --remove-older-than $keep "
 if [ "$desttype" == "remote" ]; then
 	removestr="${removestr}${destuser}@${desthost}::"
 fi
@@ -156,7 +157,7 @@ removestr="${removestr}${destdir}/${label}";
 
 debug "$removestr"
 if [ $test = 0 ]; then
-	output=`$removestr 2>&1`
+	output="`su -c "$removestr" 2>&1`"
 	if [ $? = 0 ]; then
 		debug $output
 		info "Removing backups older than $keep days succeeded."