diff --git a/doc/cpp/interconnectivity.rst b/doc/cpp/interconnectivity.rst
index bfd95579211dd9152c94aa4277dd5331bc9414f5..5fa4f87d8e120a4d0edaa809340d3ffd1e45c546 100644
--- a/doc/cpp/interconnectivity.rst
+++ b/doc/cpp/interconnectivity.rst
@@ -12,7 +12,7 @@ Interconnectivity
     a cell or a spike source. The target is a synapse on the post-synaptic cell.
 
     The :cpp:member:`target` does not include the gid of a cell, this is because a
-    :cpp:class:`cell_connection` is bound to the target cell which means that the gid
+    :cpp:class:`cell_connection` is bound to the target cell, which means that the gid
     is implicitly known.
 
     .. cpp:member:: cell_global_label_type source
@@ -45,13 +45,22 @@ Interconnectivity
     a cell or a spike source. The target is a synapse on the post-synaptic cell.
 
     The :cpp:member:`target` does not include the gid of a cell, this is because a
-    :cpp:class:`ext_cell_connection` is bound to the target cell which means that the gid
+    :cpp:class:`ext_cell_connection` is bound to the target cell, which means that the ``gid``
     is implicitly known.
 
     .. cpp:member:: cell_remote_label_type source
 
-        Source end point, represented by a :cpp:type:`cell_remote_label_type` which packages
-        a cell gid, integral tag of a group of sources on the cell, and source selection policy.
+        Source end point, comprising
+
+        - global id, uniquely identifying the source object inside the remote simulation,
+        - local id, uniquely identifying the location of the source on the source object,
+        - selection policy, how to map sources `(gid, lid)` to the targets in Arbor.
+
+    .. Note::
+    The tuple ``(gid, lid)`` must be unique for each source. This addressing scheme follows Arbor's model of multiple
+    sources (threshold detectors) per cell. If the remote simulation does not provide multiple items per
+    source object, ``lid`` can be ignored and set to zero.
+
 
     .. cpp:member:: cell_local_label_type target
 
@@ -76,7 +85,7 @@ Interconnectivity
 
     Describes a gap junction connection between two gap junction sites. The :cpp:member:`local` site does
     not include the gid of a cell, this is because a :cpp:class:`gap_junction_connection` is bound to the local
-    cell which means that the gid is implicitly known.
+    cell, which means that the gid is implicitly known.
 
     .. note::
 
@@ -140,11 +149,11 @@ Interconnectivity
 
 .. cpp:class:: network_value
 
-    A network value, describing the its calculation for each connection.
+    A network value, describing the calculation for each connection.
 
    .. cpp:function:: network_value scalar(double value)
 
-   A fixed scalar valaue.
+   A fixed scalar value.
 
    .. cpp:function:: network_value named(std::string name)
 
@@ -160,11 +169,11 @@ Interconnectivity
 
    .. cpp:function:: network_value normal_distribution(unsigned seed, double mean, double std_deviation)
 
-   A normal random distribution with given mean and standard deviation.
+   A normal random distribution with a given mean and standard deviation.
 
    .. cpp:function:: network_value truncated_normal_distribution(unsigned seed, double mean, double std_deviation, const std::array<double, 2>& range)
 
-   A truncated normal random distribution with given mean and standard deviation. Sampled through accept-reject method to only returns values in [range_0, range_1)
+   A truncated normal random distribution with a given mean and standard deviation. Sampled through an accept-reject method to only return values in [range_0, range_1)
 
    .. cpp:function:: network_value custom(custom_func_type func)
 
@@ -196,11 +205,11 @@ Interconnectivity
 
    .. cpp:function:: network_value exp(network_value v)
 
-   Exponential of given value.
+   Exponential of a given value.
 
    .. cpp:function:: network_value log(network_value v)
 
-   Logarithm of given value.
+   Logarithm of a given value.
 
    .. cpp:function:: if_else(network_selection cond, network_value true_value, network_value false_value)
 
@@ -293,7 +302,7 @@ Interconnectivity
 
    .. cpp:function:: network_selection random(unsigned seed, network_value p);
 
-    Random selection using the bernoulli random distribution with probability "p" between 0.0 and 1.0
+    Random selection using the Bernoulli random distribution with probability "p" between 0.0 and 1.0
 
    .. cpp:function:: network_selection custom(custom_func_type func);
 
@@ -303,12 +312,12 @@ Interconnectivity
 
    .. cpp:function:: network_selection distance_lt(double d);
 
-    Only select within given distance. This may enable more efficient sampling through an
+    Only select within a given distance. This may enable more efficient sampling through an
     internal spatial data structure.
 
    .. cpp:function:: network_selection distance_gt(double d);
 
-    Only select if distance greater then given distance. This may enable more efficient sampling
+    Only select if the distance is greater than a given distance. This may enable more efficient sampling
     through an internal spatial data structure.
 
 
@@ -359,14 +368,14 @@ Interconnectivity
 
     .. cpp:member:: network_label_dict dict
 
-        Label dictionary for named selecations and values.
+        Label dictionary for named selections and values.
 
 
 .. function:: generate_network_connections(recipe, context, decomp)
 
         Generate network connections from the network description in the recipe. Only generates connections 
-        with local gids in the domain composition as target.  Does not include connections from
-        the "connections_on" recipe function.
+        with local gids in the domain composition as the target.  Does not include connections from
+        the ``connections_on`` recipe function.
 
 .. function:: generate_network_connections(recipe)