diff --git a/heartbeat/Stateful b/heartbeat/Stateful
index 8ee42a0d0..1a90e2706 100755
--- a/heartbeat/Stateful
+++ b/heartbeat/Stateful
@@ -1,188 +1,189 @@
 #!/bin/sh
 #
 #
-#	Example of a stateful OCF Resource Agent. 
+#	Example of a stateful OCF Resource Agent.
 #
 # Copyright (c) 2006 Andrew Beekhof
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of version 2 of the GNU General Public License as
 # published by the Free Software Foundation.
 #
 # This program is distributed in the hope that it would be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
 # Further, this software is distributed without any warranty that it is
 # free of the rightful claim of any third person regarding infringement
 # or the like.  Any license provided herein, whether implied or
 # otherwise, applies only to this software file.  Patent licenses, if
 # any, provided herein do not apply to combinations of this program with
 # other software, or any other product whatsoever.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write the Free Software Foundation,
 # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
 #
 
 #######################################################################
 # Initialization:
 
 : ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
 . ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
 CRM_MASTER="${HA_SBIN_DIR}/crm_master -l reboot"
 
 #######################################################################
 
 meta_data() {
 	cat <<END
 <?xml version="1.0"?>
 <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
 <resource-agent name="Stateful" version="1.0">
 <version>1.0</version>
 
 <longdesc lang="en">
 This is an example resource agent that impliments two states
 </longdesc>
 <shortdesc lang="en">Example stateful resource agent</shortdesc>
 
 <parameters>
 
 <parameter name="state" unique="1">
 <longdesc lang="en">
 Location to store the resource state in
 </longdesc>
 <shortdesc lang="en">State file</shortdesc>
 <content type="string" default="${HA_RSCTMP}/Stateful-{OCF_RESOURCE_INSTANCE}.state" />
 </parameter>
 
 </parameters>
 
 <actions>
 <action name="start"   timeout="20s" />
 <action name="stop"    timeout="20s" />
+<action name="promote"    timeout="20s" />
+<action name="demote"    timeout="20s" />
 <action name="monitor" depth="0"  timeout="20" interval="10"/>
 <action name="meta-data"  timeout="5" />
 <action name="validate-all"  timeout="20s" />
 </actions>
 </resource-agent>
 END
 	exit $OCF_SUCCESS
 }
 
 #######################################################################
 
 stateful_usage() {
 	cat <<END
 usage: $0 {start|stop|promote|demote|monitor|validate-all|meta-data}
 
 Expects to have a fully populated OCF RA-compliant environment set.
 END
 	exit $1
 }
 
 stateful_update() {
 	echo $1 > ${OCF_RESKEY_state}
 }
 
 stateful_check_state() {
     target=$1
     if [ -f ${OCF_RESKEY_state} ]; then
 	state=`cat ${OCF_RESKEY_state}`
 	if [ "x$target" = "x$state" ]; then
-	    return 0
+	    return $OCF_SUCCESS
 	fi
 
     else
 	if [ "x$target" = "x" ]; then
-	    return 0
+	    return $OCF_SUCCESS
 	fi
     fi
 
-    return 1
+    return $OCF_ERR_GENERIC
 }
 
 stateful_start() {
     stateful_check_state master
     if [ $? = 0 ]; then
        	# CRM Error - Should never happen
 	return $OCF_RUNNING_MASTER
     fi
     stateful_update slave
     $CRM_MASTER -v 5
-    return 0
+    return $OCF_SUCCESS
 }
 
 stateful_demote() {
-    stateful_check_state 
+    stateful_check_state
     if [ $? = 0 ]; then
        	# CRM Error - Should never happen
 	return $OCF_NOT_RUNNING
     fi
     stateful_update slave
     $CRM_MASTER -v 5
-    return 0
+    return $OCF_SUCCESS
 }
 
 stateful_promote() {
-    stateful_check_state 
+    stateful_check_state
     if [ $? = 0 ]; then
 	return $OCF_NOT_RUNNING
     fi
     stateful_update master
     $CRM_MASTER -v 10
-    return 0
+    return $OCF_SUCCESS
 }
 
 stateful_stop() {
     $CRM_MASTER -D
     stateful_check_state master
     if [ $? = 0 ]; then
        	# CRM Error - Should never happen
 	return $OCF_RUNNING_MASTER
     fi
     if [ -f ${OCF_RESKEY_state} ]; then
 	rm ${OCF_RESKEY_state}
     fi
-    return 0
+    return $OCF_SUCCESS
 }
 
 stateful_monitor() {
     stateful_check_state "master"
     if [ $? = 0 ]; then
 	return $OCF_RUNNING_MASTER
     fi
 
     stateful_check_state "slave"
     if [ $? = 0 ]; then
 	return $OCF_SUCCESS
     fi
 
     if [ -f ${OCF_RESKEY_state} ]; then
 	echo "File '${OCF_RESKEY_state}' exists but contains unexpected contents"
 	cat ${OCF_RESKEY_state}
 	return $OCF_ERR_GENERIC
     fi
-    return 7
+    return $OCF_NOT_RUNNING
 }
 
 stateful_validate() {
 	exit $OCF_SUCCESS
 }
 
 : ${OCF_RESKEY_state=${HA_RSCTMP}/Stateful-${OCF_RESOURCE_INSTANCE}.state}
 
 case $__OCF_ACTION in
 meta-data)	meta_data;;
 start)		stateful_start;;
 promote)	stateful_promote;;
 demote)		stateful_demote;;
 stop)		stateful_stop;;
 monitor)	stateful_monitor;;
 validate-all)	stateful_validate;;
 usage|help)	stateful_usage $OCF_SUCCESS;;
 *)		stateful_usage $OCF_ERR_UNIMPLEMENTED;;
 esac
 
 exit $?
-