diff --git a/doc/concepts/benchmark_cell.rst b/doc/concepts/benchmark_cell.rst
index 7fd13efb8bc6a22314a361587db2863fc9d05afe..b3f3075002b00154dea7c50efc8194c8267e5cf7 100644
--- a/doc/concepts/benchmark_cell.rst
+++ b/doc/concepts/benchmark_cell.rst
@@ -3,20 +3,8 @@
 Benchmark cells
 ===============
 
-The description of a LIF cell is used to control the leaky integrate-and-fire dynamics:
-
-    * Resting potential.
-    * Reset potential.
-    * Initial value of membrane potential.
-    * Membrane potential decaying constant.
-    * Membrane capacitance.
-    * Firing threshold.
-    * Refractory period.
-
-The morphology of a LIF cell is automatically modelled as a single :term:`compartment <control volume>`; each cell has one built-in
-**source** and one built-in **target** which do not need to be explicitly added in the cell description.
-LIF cells do not support adding additional **sources** or **targets** to the description. They do not support
-**gap junctions**. They do not support adding density or point mechanisms.
+The description of a benchmark cell is used to determine the spiking schedule of the cell and manipulate its
+performance efficiency. This cell is mainly used by developers.
 
 API
 ---
diff --git a/doc/concepts/lif_cell.rst b/doc/concepts/lif_cell.rst
index f6447cd262209b0ddaad8055a85a2a0201d38135..e611f0ca0b19d4f315cedf4c46b14c4e58604795 100644
--- a/doc/concepts/lif_cell.rst
+++ b/doc/concepts/lif_cell.rst
@@ -5,13 +5,13 @@ LIF cells
 
 The description of a LIF cell is used to control the leaky integrate-and-fire dynamics:
 
-    * Resting potential.
-    * Reset potential.
-    * Initial value of membrane potential.
-    * Membrane potential decaying constant.
-    * Membrane capacitance.
-    * Firing threshold.
-    * Refractory period.
+* Resting potential.
+* Reset potential.
+* Initial value of membrane potential.
+* Membrane potential decaying constant.
+* Membrane capacitance.
+* Firing threshold.
+* Refractory period.
 
 The morphology of a LIF cell is automatically modelled as a single :term:`compartment <control volume>`; each cell has one built-in
 **source** and one built-in **target** which do not need to be explicitly added in the cell description.
diff --git a/doc/concepts/spike_source_cell.rst b/doc/concepts/spike_source_cell.rst
index c7eca6079fe836d3d1372dff8de4056d6e426ff0..0cf3955bfc46d63b26767cd67017f1f725967e15 100644
--- a/doc/concepts/spike_source_cell.rst
+++ b/doc/concepts/spike_source_cell.rst
@@ -3,8 +3,21 @@
 Spike source cells
 ==================
 
-The description of a benchmark cell is used to determine the spiking schedule of the cell and manipulate its
-performance efficiency. This cell is mainly used by developers.
+Spiking cells act as spike sources from user-specified values inserted via a `schedule description`.
+They are typically used as stimuli in a network of more complex cells.
+
+A spike source cell:
+
+* has its morphology is automatically modelled as a single :term:`compartment <control volume>`;
+* has one built-in **source**, which does not need to
+  be explicitly added in the cell description;
+* has no **targets**;
+* does not support adding additional **sources** or **targets**;
+* does not support **gap junctions**;
+* does not support adding density or point mechanisms;
+* can only interact with other cells via spike exchange over a :ref:`connection <modelconnections>`
+  where they be a *source* of spikes to cells that have target sites
+  (i.e. *cable* and *lif* cells), but they can not *receive* spikes.
 
 API
 ---
diff --git a/doc/conf.py b/doc/conf.py
index 41bedfafbfe1f1bfa5b48549cba72076acbf675a..2a88e5425194ba5a3099dfcbc7b65d7eb0db5e2d 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -12,7 +12,6 @@ sys.path.append(script_path)
 html_static_path = ['static']
 
 def setup(app):
-    app.add_css_file('custom.css')
     app.add_object_type('generic', 'gen', 'pair: %s; generic')
     app.add_object_type('label', 'lab', 'pair: %s; label')
 
diff --git a/doc/install/index.rst b/doc/install/index.rst
index 892fb0045d11f96c76ba0095868b885afafe0f43..6b91076c4753be992af5f61a6a93720e826050ab 100644
--- a/doc/install/index.rst
+++ b/doc/install/index.rst
@@ -3,16 +3,10 @@
 Get Arbor
 =========
 
-Currently we offer two ways to get Arbor.
-
-1. **Python Package**. To get started quickly with Arbor using its Python API on your personal machine, see the :ref:`Python installation guide <in_python>`.
-2. **Build and install from source**. To build and install Arbor, on your own machine or HPC environment, see :ref:`in_build_install`.
-
-If you wish to use the C++ API, you'll need to build Arbor from source. Note that you can also build the Python bindings using this method.
+To get started quickly with Arbor using its Python API on your personal machine, we advise that you install Arbor's Python package. If you wish to use the C++ API, you can use the Spack package, or build Arbor from source. Note that you can also build the Python bindings using these methods.
 
 .. toctree::
-   :maxdepth: 2
-   :caption: Install Arbor:
+   :maxdepth: 1
 
    python
    spack
diff --git a/doc/python/simulation.rst b/doc/python/simulation.rst
index a5e2573f14c5e52f3eac2297a03808ddde949b58..f00b22b40db480858b26752678ec0c1697b0bdb2 100644
--- a/doc/python/simulation.rst
+++ b/doc/python/simulation.rst
@@ -31,7 +31,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
         # Get a description of the partition of the model over the cores.
         decomp = arbor.partition_load_balance(recipe, context)
 
-        # Instatitate the simulation.
+        # Instantiate the simulation.
         sim = arbor.simulation(recipe, decomp, context)
 
         # Run the simulation for 2000 ms with time stepping of 0.025 ms
@@ -185,7 +185,7 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
 
 .. class:: sampling_policy
 
-    Enumeration for deteriming sampling policy.
+    Enumeration for determining sampling policy.
 
     .. attribute:: lax
 
@@ -216,7 +216,7 @@ Spikes recorded during a simulation are returned as a NumPy structured datatype
 
         import arbor
 
-        # Instatitate the simulation.
+        # Instantiate the simulation.
         sim = arbor.simulation(recipe, decomp, context)
 
         # Direct the simulation to record all spikes.
diff --git a/doc/scripts/divio_docs_theme/static/css/divio.css b/doc/scripts/divio_docs_theme/static/css/divio.css
index 2729786fa083b2771306f1c5764c494a2a955d1e..2548d51712102dcd8db8060b1ce051fe9211d43b 100644
--- a/doc/scripts/divio_docs_theme/static/css/divio.css
+++ b/doc/scripts/divio_docs_theme/static/css/divio.css
@@ -3580,6 +3580,18 @@ input[type="radio"][disabled], input[type="checkbox"][disabled] {
 .wy-table-responsive table td, .wy-table-responsive table th {
   white-space: nowrap; }
 
+@media screen and (min-width: 767px) {
+  .wy-table-responsive table td {
+      /* !important prevents the common CSS stylesheets from overriding
+        this as on RTD they are loaded after this stylesheet */
+      white-space: normal !important;
+  }
+
+  .wy-table-responsive {
+      overflow: visible !important;
+  }
+}
+
 a {
   color: #0099ee;
   text-decoration: none;
diff --git a/doc/static/custom.css b/doc/static/custom.css
deleted file mode 100644
index 2430843e70c6d2a3043d20a48cf268cfa46b8c43..0000000000000000000000000000000000000000
--- a/doc/static/custom.css
+++ /dev/null
@@ -1,42 +0,0 @@
-.example-code>div[class^='highlight']:before {
-    font-weight: bold;
-    display: block;
-    padding-bottom: 2pt;
-    padding-left: 3pt;
-    content: "Example";
-    background: #6ab0de;
-    color: #ffffff;
-}
-
-.api-code>div[class^='highlight']:before {
-    font-weight: bold;
-    display: block;
-    padding-bottom: 2pt;
-    padding-left: 3pt;
-    content: "API";
-    background: #e0e0e0;
-}
-
-.api-code>div[class^='highlight'] {
-    background: #f4f4f4;
-}
-
-li>p:last-child {
-    padding-bottom: 2ex;
-}
-
-table.docutils td {
-    vertical-align: top !important;
-}
-
-em {
-  font-style: bold;
-  color: #000099;
-}
-
-@media screen and (min-width: 40em) {
-    .wy-table-responsive table td,
-    .wy-table-responsive table th {
-        white-space: normal;
-    }
-}