diff --git a/README.rst b/README.rst
index 6b13f4844115abae704e1fdd45a959f38327d785..0b2db193ede351d3cd0bc0d581a5d75ab50ba1dc 100644
--- a/README.rst
+++ b/README.rst
@@ -52,14 +52,33 @@ currently provided by ``ipsetd``.
 Managing replicated ipsets
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Use the ``ipsetc`` command to manipulate sets. It supports the
-``add``, ``del`` and ``create`` commands, using the same syntax as
-``ipset``.
-
-Note that ``ipsetd`` assumes full control of the ipset you create with
-it: if you perform local changes (perhaps using the ``ipset``
-tool), they will not be replicated and will lead to inconsistencies
-in the cluster.
+Use the ``ipsetc`` command to manipulate sets, as you would use the
+standard ``ipset`` tool. The *add*, *del* and *create* commands are
+supported, using a syntax similar to that of ``ipset``. For example::
+
+    $ ipsetc --create blacklist hash:ip
+    $ ipsetc --add blacklist 82.94.249.234
+
+will create and populates an IP-based hash set called *blacklist*.
+
+
+Caveats and TODOs
+~~~~~~~~~~~~~~~~~
+
+Note that ``ipsetd`` expects full control over the ipset that it
+manages: if you perform local changes (perhaps using the standard
+``ipset`` tool), they will not be replicated and will lead to
+inconsistencies in the cluster.
+
+Note also that, due to the log-based nature of the underlying RAFT
+protocol, commands are not executed synchronously with requests, so
+there is no way to retrieve or display their output or exit status.
+This means that you should make sure that the ipset commands are
+syntactically correct before invoking ``ipsetc``, or they will
+silently fail when applied by the individual nodes in the cluster.
+
+There is currently no way to remove nodes from the cluster (must
+implement *LeaveCommand*).