diff --git a/src/warden-server/bin/wardend b/src/warden-server/bin/wardend
index d0170f7c15886cea3f349fcc266eee0de20914d2..2a1c0b7cf93ae8002c9488e83435161101d340a3 100755
--- a/src/warden-server/bin/wardend
+++ b/src/warden-server/bin/wardend
@@ -31,7 +31,6 @@
 # otherwise) arising in any way out of the use of this software, even
 # if advised of the possibility of such damage.
 
-
 WARDEN="/opt/warden-server/bin/warden-server.pl"
 PID_FILE="/var/run/warden-server.pl.pid"
 LOCK_FILE="/var/lock/warden-server"
@@ -47,6 +46,12 @@ if [ -z $WARDEN ]; then
 	exit 1
 fi
 
+
+usage() {
+	echo "Usage: $0 [start|stop|status|restart|force-stop]"
+	exit 1
+}
+
 check_status() {
 	/bin/ps axo pid,comm | grep -q "warden-server*"; RET_VAL=`echo $?`
 	if [ $RET_VAL -eq 0 ]; then
@@ -61,64 +66,79 @@ get_pid() {
 	return $PID
 }
 
-case $1 in
-	status)
-		check_status
-		if [ $STATUS -eq 1 ]; then
-			get_pid PID
-			echo "Warden daemon is running (pid $PID)."
+warden_start() {
+	check_status
+	if [ $STATUS -eq 1 ]; then
+		get_pid PID
+		echo "Warden daemon is running (pid $PID)."
+	else
+		echo "Starting Warden server daemon ..."
+		$WARDEN
+		touch $LOCK_FILE
+	fi
+}
+
+warden_stop() {
+	check_status
+	if [ $STATUS -eq 1 ]; then
+		echo "Stoping Warden server daemon ..."
+		if [ -e $PID_FILE ]; then
+			PID=`cat $PID_FILE`
+			kill -1 $PID
+			rm -f $LOCK_FILE
 		else
-			echo "Warden daemon is NOT running."
+			echo "Unable to stop Warden server daemon. Try to use: $SCRIPTNAME force-stop"
+		fi
+	else
+		echo "Warden daemon is NOT running."
+	fi
+}
+
+warden_status() {
+	check_status
+	if [ $STATUS -eq 1 ]; then
+		get_pid PID
+		echo "Warden daemon is running (pid $PID)."
+	else
+		echo "Warden daemon is NOT running."
+	fi
+}
+
+warden_force_stop() {
+	check_status
+	if [ $STATUS -eq 1 ]; then
+		echo "Force stoping Warden server daemon ..."
+		get_pid PID
+		kill -9 $PID
+		if [ -e $PID_FILE ]; then
+			rm -f $PID_FILE
 		fi
+		rm -f $LOCK_FILE
+	else
+		echo "Warden daemon is NOT running."
+	fi
+}
+
+case $1 in
+	status)
+		warden_status
 		;;
 	start)
-		check_status
-		if [ $STATUS -eq 1 ]; then
-			get_pid PID
-			echo "Warden daemon is running (pid $PID)."
-		else
-			echo "Starting Warden server daemon ..."
-			$WARDEN
-			touch $LOCK_FILE
-		fi
+		warden_start
 		;;
 	stop)
-		check_status
-		if [ $STATUS -eq 1 ]; then
-			echo "Stoping Warden server daemon ..."
-			if [ -e $PID_FILE ]; then
-				PID=`cat $PID_FILE`
-				kill -1 $PID
-				rm -f $LOCK_FILE
-			else
-				echo "Unable to stop Warden server daemon. Try to use: $SCRIPTNAME force-stop"
-			fi
-		else
-			echo "Warden daemon is NOT running."
-		fi
+		warden_stop
 		;;
 	force-stop)
-		check_status
-		if [ $STATUS -eq 1 ]; then
-			echo "Force stoping Warden server daemon ..."
-			get_pid PID
-			kill -9 $PID
-			if [ -e $PID_FILE ]; then
-				rm -f $PID_FILE
-			fi
-			rm -f $LOCK_FILE
-		else
-			echo "Warden daemon is NOT running."
-		fi
+		warden_force_stop
 		;;
 	restart)
-		$0 stop
-		$0 start
+		warden_stop
+		sleep 1
+		warden_start
 		;;
 	*)
-		# Display usage of this script
-		echo "Usage: $0 [start|stop|status|restart|force-stop]"
-		exit 1
+		usage
 		;;
 esac