check_requires() { # Check required files, monitors and reactors
	for i in "$@" ; do
		p=${i%:program}
		m=${i%:monitor}
		r=${i%:reactor}
		if [ $p != $i ]; then
			if ! which $p ; then
				echo "Required program $p is not found."
				exit_unresolved
			fi
		elif [ $m != $i ]; then
			if ! grep -wq $m available_monitors ; then
				echo "Required monitor $m is not configured."
				exit_unsupported
			fi
		elif [ $r != $i ]; then
			if ! grep -wq $r available_reactors ; then
				echo "Required reactor $r is not configured."
				exit_unsupported
			fi
		elif [ ! -e $i ]; then
			echo "Required feature interface $i doesn't exist."
			exit_unsupported
		fi
	done
}

initialize_system() { # Reset RV to initial-state
	echo > enabled_monitors
	for m in monitors/*; do
		echo nop > $m/reactors || true
	done
	echo 1 > monitoring_on
	echo 1 > reacting_on || true
}

finish_system() {
	initialize_system
}
