diff --git a/src/Main/fg_props.cxx b/src/Main/fg_props.cxx
index 88d535aae..c82aec138 100644
--- a/src/Main/fg_props.cxx
+++ b/src/Main/fg_props.cxx
@@ -702,6 +702,19 @@ fgHasNode (const char * path)
   return (fgGetNode(path, false) != 0);
 }
 
+void
+fgAddChangeListener (SGPropertyChangeListener * listener, const char * path)
+{
+  fgGetNode(path, true)->addChangeListener(listener);
+}
+
+void
+fgAddChangeListener (SGPropertyChangeListener * listener,
+		     const char * path, int index)
+{
+  fgGetNode(path, index, true)->addChangeListener(listener);
+}
+
 bool
 fgGetBool (const char * name, bool defaultValue)
 {
diff --git a/src/Main/fg_props.hxx b/src/Main/fg_props.hxx
index 6e62ffe7d..1f9a1f87d 100644
--- a/src/Main/fg_props.hxx
+++ b/src/Main/fg_props.hxx
@@ -106,6 +106,30 @@ extern SGPropertyNode * fgGetNode (const char * path,
 extern bool fgHasNode (const char * path);
 
 
+/**
+ * Add a listener to a node.
+ *
+ * @param listener The listener to add to the node.
+ * @param path The path of the node, relative to root.
+ * @param index The index for the last member of the path (overrides
+ * any given in the string).
+ */
+extern void fgAddChangeListener (SGPropertyChangeListener * listener,
+				 const char * path);
+
+
+/**
+ * Add a listener to a node.
+ *
+ * @param listener The listener to add to the node.
+ * @param path The path of the node, relative to root.
+ * @param index The index for the last member of the path (overrides
+ * any given in the string).
+ */
+extern void fgAddChangeListener (SGPropertyChangeListener * listener,
+				 const char * path, int index);
+
+
 /**
  * Get a bool value for a property.
  *