diff --git a/doc/RTD/DeveloperGuide/AddingTasks/addingtasks.rst b/doc/RTD-Legacy/DeveloperGuide/AddingTasks/addingtasks.rst
similarity index 100%
rename from doc/RTD/DeveloperGuide/AddingTasks/addingtasks.rst
rename to doc/RTD-Legacy/DeveloperGuide/AddingTasks/addingtasks.rst
diff --git a/doc/RTD/DeveloperGuide/Examples/Cooling/cooling.rst b/doc/RTD-Legacy/DeveloperGuide/Examples/Cooling/cooling.rst
similarity index 100%
rename from doc/RTD/DeveloperGuide/Examples/Cooling/cooling.rst
rename to doc/RTD-Legacy/DeveloperGuide/Examples/Cooling/cooling.rst
diff --git a/doc/RTD/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst b/doc/RTD-Legacy/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst
similarity index 100%
rename from doc/RTD/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst
rename to doc/RTD-Legacy/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst
diff --git a/doc/RTD/DeveloperGuide/developerguide.rst b/doc/RTD-Legacy/DeveloperGuide/developerguide.rst
similarity index 100%
rename from doc/RTD/DeveloperGuide/developerguide.rst
rename to doc/RTD-Legacy/DeveloperGuide/developerguide.rst
diff --git a/doc/RTD/FAQ/index.rst b/doc/RTD-Legacy/FAQ/index.rst
similarity index 100%
rename from doc/RTD/FAQ/index.rst
rename to doc/RTD-Legacy/FAQ/index.rst
diff --git a/doc/RTD/Innovation/AsynchronousComms/index.rst b/doc/RTD-Legacy/Innovation/AsynchronousComms/index.rst
similarity index 100%
rename from doc/RTD/Innovation/AsynchronousComms/index.rst
rename to doc/RTD-Legacy/Innovation/AsynchronousComms/index.rst
diff --git a/doc/RTD/Innovation/Caching/index.rst b/doc/RTD-Legacy/Innovation/Caching/index.rst
similarity index 100%
rename from doc/RTD/Innovation/Caching/index.rst
rename to doc/RTD-Legacy/Innovation/Caching/index.rst
diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png
similarity index 100%
rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png
rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png
diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitCell.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitCell.png
similarity index 100%
rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitCell.png
rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitCell.png
diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitPair.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitPair.png
similarity index 100%
rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitPair.png
rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitPair.png
diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/index.rst b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/index.rst
similarity index 100%
rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/index.rst
rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/index.rst
diff --git a/doc/RTD/Innovation/HybridParallelism/index.rst b/doc/RTD-Legacy/Innovation/HybridParallelism/index.rst
similarity index 100%
rename from doc/RTD/Innovation/HybridParallelism/index.rst
rename to doc/RTD-Legacy/Innovation/HybridParallelism/index.rst
diff --git a/doc/RTD/Innovation/TaskBasedParallelism/OMPScaling.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/OMPScaling.png
similarity index 100%
rename from doc/RTD/Innovation/TaskBasedParallelism/OMPScaling.png
rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/OMPScaling.png
diff --git a/doc/RTD/Innovation/TaskBasedParallelism/TasksExample.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExample.png
similarity index 100%
rename from doc/RTD/Innovation/TaskBasedParallelism/TasksExample.png
rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExample.png
diff --git a/doc/RTD/Innovation/TaskBasedParallelism/TasksExampleConflicts.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExampleConflicts.png
similarity index 100%
rename from doc/RTD/Innovation/TaskBasedParallelism/TasksExampleConflicts.png
rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExampleConflicts.png
diff --git a/doc/RTD/Innovation/TaskBasedParallelism/index.rst b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/index.rst
similarity index 100%
rename from doc/RTD/Innovation/TaskBasedParallelism/index.rst
rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/index.rst
diff --git a/doc/RTD/Innovation/TaskGraphPartition/index.rst b/doc/RTD-Legacy/Innovation/TaskGraphPartition/index.rst
similarity index 100%
rename from doc/RTD/Innovation/TaskGraphPartition/index.rst
rename to doc/RTD-Legacy/Innovation/TaskGraphPartition/index.rst
diff --git a/doc/RTD/Innovation/Vectorisation/index.rst b/doc/RTD-Legacy/Innovation/Vectorisation/index.rst
similarity index 100%
rename from doc/RTD/Innovation/Vectorisation/index.rst
rename to doc/RTD-Legacy/Innovation/Vectorisation/index.rst
diff --git a/doc/RTD/Innovation/index.rst b/doc/RTD-Legacy/Innovation/index.rst
similarity index 96%
rename from doc/RTD/Innovation/index.rst
rename to doc/RTD-Legacy/Innovation/index.rst
index da3f2474b4c71f8030634b2f669d3d8093757171..65a9cb82230b5661f332e25ea05644ec8e2cdbf8 100644
--- a/doc/RTD/Innovation/index.rst
+++ b/doc/RTD-Legacy/Innovation/index.rst
@@ -1,5 +1,3 @@
-.. _GettingStarted:
-
 What makes SWIFT different?
 ===========================
 
diff --git a/doc/RTD-Legacy/Makefile b/doc/RTD-Legacy/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..b1dfebb01c2f55530f7a8efad3c5e5bf96484c18
--- /dev/null
+++ b/doc/RTD-Legacy/Makefile
@@ -0,0 +1,177 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  xml        to make Docutils-native XML files"
+	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SWIFT.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SWIFT.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/SWIFT"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SWIFT"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through platex and dvipdfmx..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+
+xml:
+	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+	@echo
+	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+	@echo
+	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/doc/RTD/Motivation/index.rst b/doc/RTD-Legacy/Motivation/index.rst
similarity index 100%
rename from doc/RTD/Motivation/index.rst
rename to doc/RTD-Legacy/Motivation/index.rst
diff --git a/doc/RTD/Physics/Gravity/gravity.rst b/doc/RTD-Legacy/Physics/Gravity/gravity.rst
similarity index 100%
rename from doc/RTD/Physics/Gravity/gravity.rst
rename to doc/RTD-Legacy/Physics/Gravity/gravity.rst
diff --git a/doc/RTD/Physics/SPH/sph.rst b/doc/RTD-Legacy/Physics/SPH/sph.rst
similarity index 100%
rename from doc/RTD/Physics/SPH/sph.rst
rename to doc/RTD-Legacy/Physics/SPH/sph.rst
diff --git a/doc/RTD/Physics/index.rst b/doc/RTD-Legacy/Physics/index.rst
similarity index 100%
rename from doc/RTD/Physics/index.rst
rename to doc/RTD-Legacy/Physics/index.rst
diff --git a/doc/RTD/conf.py b/doc/RTD-Legacy/conf.py
similarity index 98%
rename from doc/RTD/conf.py
rename to doc/RTD-Legacy/conf.py
index b4eab3d354322f8ff5e060b1795c2654eb879f90..6b65aabe54a480a29a7930f6e6f24a35b0204dcf 100644
--- a/doc/RTD/conf.py
+++ b/doc/RTD-Legacy/conf.py
@@ -25,7 +25,7 @@ import sys, os
 
 # Add any Sphinx extension module names here, as strings. They can be extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.mathjax']
+extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
diff --git a/doc/RTD/index.rst b/doc/RTD-Legacy/index.rst
similarity index 100%
rename from doc/RTD/index.rst
rename to doc/RTD-Legacy/index.rst
diff --git a/doc/RTD/.gitignore b/doc/RTD/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..50239858cbc1b86a270ae88903139d91b943acd3
--- /dev/null
+++ b/doc/RTD/.gitignore
@@ -0,0 +1,2 @@
+build/*
+make.bat
diff --git a/doc/RTD/Makefile b/doc/RTD/Makefile
index b1dfebb01c2f55530f7a8efad3c5e5bf96484c18..22ff80ae32739df7d7ca97d8d2a6c6c8159b8248 100644
--- a/doc/RTD/Makefile
+++ b/doc/RTD/Makefile
@@ -1,177 +1,20 @@
-# Makefile for Sphinx documentation
+# Minimal makefile for Sphinx documentation
 #
 
 # You can set these variables from the command line.
 SPHINXOPTS    =
 SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = _build
-
-# User-friendly check for sphinx-build
-ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
-$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
-endif
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+SPHINXPROJ    = SWIFTSPHWIthFine-grainedinter-dependentTasking
+SOURCEDIR     = source
+BUILDDIR      = build
 
+# Put it first so that "make" without argument is like "make help".
 help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  texinfo    to make Texinfo files"
-	@echo "  info       to make Texinfo files and run them through makeinfo"
-	@echo "  gettext    to make PO message catalogs"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  xml        to make Docutils-native XML files"
-	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SWIFT.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SWIFT.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/SWIFT"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SWIFT"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-latexpdfja:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through platex and dvipdfmx..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo
-	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-	@echo "Run \`make' in that directory to run these through makeinfo" \
-	      "(use \`make info' here to do that automatically)."
-
-info:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo "Running Texinfo files through makeinfo..."
-	make -C $(BUILDDIR)/texinfo info
-	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-	@echo
-	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-xml:
-	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
-	@echo
-	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+.PHONY: help Makefile
 
-pseudoxml:
-	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
-	@echo
-	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/doc/RTD/README.md b/doc/RTD/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3394ce7b8b97a71a7f14fb235e49e2efb51b9f9f
--- /dev/null
+++ b/doc/RTD/README.md
@@ -0,0 +1,15 @@
+SWIFT Documentation
+===================
+
+This is the main documentation for SWIFT that can be found on ReadTheDocs.
+
+You will need the `sphinx` and `sphinx-autobuild` python packages (pip install
+them!) to build the documentation to html, as well as the `sphinx_rtd_theme`
+package which is used as the theme.
+
+To build the documentation, `make html` and then it is available in
+`build/html`.
+
+Please consider adding documentation when you add code!
+
+
diff --git a/doc/RTD/source/Cooling/index.rst b/doc/RTD/source/Cooling/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..46a01b2a054629b7fc13f0ea190c2a5a0fdd6d9c
--- /dev/null
+++ b/doc/RTD/source/Cooling/index.rst
@@ -0,0 +1,67 @@
+.. Equation of State
+   Loic Hausammann, 7th April 2018
+
+.. _cooling:
+
+Cooling
+=======
+
+Currently, we have 5 different cooling (EAGLE, Grackle, const-lambda, const-du
+and none).  Three of them are easily solved analytically (const-lambda,
+const-du and none) while the two last requires complex chemical networks.
+
+
+Equations
+---------
+
+The first table compares the different analytical cooling while the next ones
+are specific to a given cooling.  The quantities are the internal energy (\\( u
+\\)), the density \\( rho \\), the element mass fraction (\\( X_i \\)), the
+cooling function (\\(\\Lambda\\), the proton mass (\\( m_H \\)) and the time
+step condition (\\( t\_\\text{step}\\)).  If not specified otherwise, all
+cooling contains a temperature floor avoiding negative temperature.
+
+.. csv-table:: Analytical Cooling
+   :header: "Variable", "Const-Lambda", "Const-du", "None"
+
+   "\\( \\frac{ \\mathrm{d}u }{ \\mathrm{d}t } \\)", "\\( -\\Lambda \\frac{\\rho^2 X_H^2}{\\rho m_H^2} \\)", "const", "0"
+   "\\( \\Delta t\_\\text{max} \\)", "\\( t\_\\text{step} \\frac{u}{\\left|\\frac{ \\mathrm{d}u }{ \\mathrm{d}t }\\right|} \\)", "\\( t\_\\text{step} \\frac{u}{\\ \\left| \\frac{ \\mathrm{d}u }{ \\mathrm{d}t }\\right|} \\)", "None"
+
+
+Grackle
+~~~~~~~
+   
+Grackle is a chemistry and cooling library presented in B. Smith et al. 2016
+(do not forget to cite if used).  Four different modes are available:
+equilibrium, 6 species network (H, H\\( ^+ \\), e\\( ^- \\), He, He\\( ^+ \\)
+and He\\( ^{++} \\)), 9 species network (adds H\\(^-\\), H\\(_2\\) and
+H\\(_2^+\\)) and 12 species (adds D, D\\(^+\\) and HD).  Following the same
+order, the swift cooling options are ``grackle``, ``grackle1``, ``grackle2``
+and ``grackle3`` (the numbers correspond to the value of
+``primordial_chemistry`` in Grackle).  It also includes some self-shielding
+methods and UV background.  In order to use the Grackle cooling, you will need
+to provide an HDF5 table computed by Cloudy.
+
+When starting a simulation without providing the different fractions, the code
+supposes an equilibrium and computes the fractions automatically.
+
+Eagle
+~~~~~
+
+TODO
+
+How to Implement a New Cooling
+------------------------------
+
+The developper should provide at least one function for:
+ * writing the cooling name in HDF5
+ * cooling a particle
+ * the maximal time step possible
+ * initializing a particle
+ * computing the total energy radiated by a particle
+ * initializing the cooling parameters
+ * printing the cooling type
+
+For implementation details, see ``src/cooling/none/cooling.h``
+
+See :ref:`new_option` for the full list of changes required.
diff --git a/doc/RTD/source/EquationOfState/index.rst b/doc/RTD/source/EquationOfState/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3558041e9513b967a2530165acec5e5f4f11a364
--- /dev/null
+++ b/doc/RTD/source/EquationOfState/index.rst
@@ -0,0 +1,50 @@
+.. Equation of State
+   Loic Hausammann, 6th April 2018
+
+.. _equation_of_state:
+
+Equation of State
+=================
+
+Currently (if the documentation was well updated), we have two different
+equation of states implemented: ideal gas and isothermal.  They describe the
+relations between our main thermodynamical variables: the internal energy
+(\\(u\\)), the density (\\(\\rho\\)), the entropy (\\(A\\)) and the pressure
+(\\(P\\)).
+
+Equations
+---------
+
+In the following section, the variables not yet defined are: \\(\\gamma\\) for
+the adiabatic index and \\( c_s \\) for the speed of sound.
+
+.. csv-table:: Ideal Gas
+   :header: "Variable", "A", "u", "P"
+	   
+   "A", "", "\\( \\left( \\gamma - 1 \\right) u \\rho^{1-\\gamma} \\)", "\\(P \\rho^{-\\gamma} \\)"
+   "u", "\\( A \\frac{ \\rho^{ \\gamma - 1 } }{\\gamma - 1 } \\)", "", "\\(\\frac{1}{\\gamma - 1} \\frac{P}{\\rho}\\)"
+   "P", "\\( A \\rho^\\gamma \\)", "\\( \\left( \\gamma - 1\\right) u \\rho \\)", ""
+   "\\(c_s\\)", "\\(\\sqrt{ \\gamma \\rho^{\\gamma - 1} A}\\)", "\\(\\sqrt{ u \\gamma \\left( \\gamma - 1 \\right) } \\)", "\\(\\sqrt{ \\frac{\\gamma P}{\\rho} }\\)"
+
+
+.. csv-table:: Isothermal Gas
+   :header: "Variable", "A", "u", "P"
+
+	    
+   "A", "", "\\(\\left( \\gamma - 1 \\right) u \\rho^{1-\\gamma}\\)", "" 
+   "u", "", "const", ""
+   "P", "", "\\(\\left( \\gamma - 1\\right) u \\rho \\)", ""
+   "\\( c_s\\)", "", "\\(\\sqrt{ u \\gamma \\left( \\gamma - 1 \\right) } \\)", ""
+
+
+How to Implement a New Equation of State
+----------------------------------------
+
+See :ref:`new_option` for a full list of required changes.
+
+You will need to provide a ``equation_of_state.h`` file containing: the
+definition of ``eos_parameters``, IO functions and transformations between the
+different variables: \\(u(\\rho, A)\\), \\(u(\\rho, P)\\), \\(P(\\rho,A)\\),
+\\(P(\\rho, u)\\), \\(A(\\rho, P)\\), \\(A(\\rho, u)\\), \\(c_s(\\rho, A)\\),
+\\(c_s(\\rho, u)\\) and \\(c_s(\\rho, P)\\). See other equation of state files
+to have implementation details.
diff --git a/doc/RTD/source/GettingStarted/compiling_code.rst b/doc/RTD/source/GettingStarted/compiling_code.rst
new file mode 100644
index 0000000000000000000000000000000000000000..557c5e66aac57b36f5e773e553a3c67d3b554f70
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/compiling_code.rst
@@ -0,0 +1,93 @@
+.. Compiling the Code
+   Josh Borrow, 5th April 2018
+
+
+Compiling SWIFT
+===============
+
+Dependencies
+------------
+
+To compile SWIFT, you will need the following libraries:
+
+HDF5
+~~~~
+
+Version 1.8.x or higher is required. Input and output files are stored as HDF5
+and are compatible with the existing GADGET-2 specification. Please consider
+using a build of parallel-HDF5, as SWIFT can leverage this when writing and
+reading snapshots. We recommend using HDF5 > 1.10.x as this is `vastly superior`
+in parallel.
+
+MPI
+~~~
+A recent implementation of MPI, such as Open MPI (v2.x or higher), is required,
+or any library that implements at least the MPI 3 standard.
+
+Libtool
+~~~~~~~
+The build system depends on libtool.
+
+FFTW
+~~~~
+Version 3.3.x or higher is required for periodic gravity.
+
+METIS
+~~~~~
+METIS is used for domain decomposition and load balancing.
+
+libNUMA
+~~~~~~~
+libNUMA is used to pin threads.
+
+GSL
+~~~
+The GSL is required for cosmological integration.
+
+
+Optional Dependencies
+---------------------
+
+There are also the following _optional_ dependencies.
+
+TCmalloc/Jemalloc
+~~~~~~~~~~~~~~~~~
+TCmalloc/Jemalloc are used for faster memory allocations when available.
+
+DOXYGEN
+~~~~~~~
+You can build documentation for SWIFT with DOXYGEN.
+
+Python
+~~~~~~
+To run the examples, you will need python and some of the standard scientific libraries (numpy, matplotlib). Some examples use Python 2 scripts, but the more recent ones use Python 3 (this is specified in individual READMEs).
+
+GRACKLE
+~~~~~~~
+GRACKLE cooling is implemented in SWIFT. If you wish to take advantage of it, you will need it installed.
+
+
+Initial Setup
+-------------
+
+We use autotools for setup. To get a basic running version of the code
+(the binary is created in swiftsim/examples) on most platforms, run
+
+.. code-block:: bash
+
+  ./autogen.sh
+  ./configure
+  make
+
+
+MacOS Specific Oddities
+~~~~~~~~~~~~~~~~~~~~~~~
+
+To build on MacOS you will need to disable compiler warnings due to an
+incomplete implementation of pthread barriers. DOXYGEN also has some issues on
+MacOS, so it is best to leave it out. To configure:
+
+.. code-block:: bash
+
+  ./configure —disable-compiler-warnings —disable-doxygen-doc
+
diff --git a/doc/RTD/source/GettingStarted/configuration_options.rst b/doc/RTD/source/GettingStarted/configuration_options.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e37384cfd1c29cb1df82cc180a763f4859650b2e
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/configuration_options.rst
@@ -0,0 +1,50 @@
+.. Configuration Options
+   Josh Borrow, 5th April 2018
+
+Configuration Options
+=====================
+
+There are many configuration options that SWIFT makes available; a few key
+ones are summarised here.
+
+Note that these need to be ran with ``./configure x`` where ``x`` is the
+configuration flag.
+
+A description of the available options of the below flags can be found by using
+``./configure  --help``.
+
+``--with-hydro=gadget2``
+~~~~~~~~~~~~~~~~~~~~~~~~
+There are several hydrodynamical schemes available in SWIFT. You can choose
+between them at compile-time with this option.
+
+``--with-riemann-solver=none``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Some hydrodynamical schemes, for example GIZMO, require a Riemann solver.
+
+``--with-kernel=cubic-spline``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Several kernels are made available for use with the hydrodynamical schemes.
+Choose between them with this compile-time flag.
+
+``--with-hydro-dimension=3``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Run problems in 1, 2, and 3 (default) dimensions.
+
+``--with-equation-of-state=ideal-gas``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Several equations of state are made available with this flag. Also consider
+``--with-adiabatic-index``.
+
+``--with-cooling=none``
+~~~~~~~~~~~~~~~~~~~~~~~
+Several cooling implementations (including GRACKLE) are available.
+
+``--with-ext-potential=none``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Many external potentials are available for use with SWIFT. You can choose
+between them at compile time. Some examples include a central potential, a
+softened central potential, and a sinusoidal potential. You will need to
+configure, for example, the mass in your parameterfile at runtime.
+
+
diff --git a/doc/RTD/source/GettingStarted/index.rst b/doc/RTD/source/GettingStarted/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ffc1ce036d79851cca30f4073f37cfdbb0228c0d
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/index.rst
@@ -0,0 +1,23 @@
+.. Getting Started
+   Josh Borrow, 4th April 2018
+
+Getting Started
+===============
+
+So, you want to use SWIFT? Below you should find all of the information you need
+to get up and running with some examples, and then build your own initial conditions
+for running.
+
+Also, you might want to consult our onboarding guide (available at
+http://www.swiftsim.com/onboarding.pdf) if you would like something to print out
+and keep on your desk.
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   compiling_code
+   running_example
+   runtime_options
+   configuration_options
+   what_about_mpi
diff --git a/doc/RTD/source/GettingStarted/running_example.rst b/doc/RTD/source/GettingStarted/running_example.rst
new file mode 100644
index 0000000000000000000000000000000000000000..854e74cf830d58e51cf866d59a93ede6dceb57b6
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/running_example.rst
@@ -0,0 +1,37 @@
+.. Running an Example
+   Josh Borrow, 5th April 2018
+
+Running an Example
+==================
+
+Now that you have built the code, you will want to run an example! To do that,
+you need to follow the following instructions (requires ``python2`` or
+``python3`` with the ``h5py`` and other standard scientific packages, as well
+as ``wget`` for grabbing the glass).
+
+.. code-block:: bash
+   
+   cd examples/SodShock_3D
+   ./getGlass.sh
+   python makeIC.py
+   ../swift -s -t 4 sodShock.yml
+   python plotSolution.py 1
+
+
+This will run the 'SodShock' in 3D and produce a nice plot that shows you
+how the density has varied. Try running with GIZMO (this will take
+_significantly_ longer than with SPH) to see the difference. For that, you
+will need to reconfigure with the following options:
+
+.. code-block:: bash
+   
+   ./configure \
+   --with-hydro=gizmo \
+   --with-riemann-solver=hllc
+
+
+To see the results that you should get, you should check out our developer
+wiki at https://gitlab.cosma.dur.ac.uk/swift/swiftsim/wikis/Sod_3D.
+
+If you don't get these results, please contact us on our GitHub page at
+https://github.com/SWIFTSIM/swiftsim/issues.
diff --git a/doc/RTD/source/GettingStarted/runtime_options.rst b/doc/RTD/source/GettingStarted/runtime_options.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e9f83399f50648ddf4c66919576b4ecc9aa8cf8f
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/runtime_options.rst
@@ -0,0 +1,41 @@
+.. Runtime Options
+   Josh Borrow, 5th April 2018
+
+Runtime Options
+===============
+
+SWIFT requires a number of runtime options to run and get any sensible output.
+For instance, just running the ``swift`` binary will not use any SPH or gravity;
+the particles will just sit still!
+
+Below is a list of the runtime options and when they should be used. The same list
+can be found by typing ``./swift -h``.
+
++ ``-a``: Pin runners using processor affinity.
++ ``-c``: Run with cosmological time integration.
++ ``-C``: Run with cooling.
++ ``-d``: Dry run. Read the parameter file, allocate memory but does not read
+  the particles from ICs and exit before the start of time integration. Allows
+  user to check validity of parameter and IC files as well as memory limits.
++ ``-D``: Always drift all particles even the ones far from active particles.
+  This emulates Gadget-[23] and GIZMO's default behaviours.
++ ``-e``: Enable floating-point exceptions (debugging mode).
++ ``-f``: {int} Overwrite the CPU frequency (Hz) to be used for time measurements.
++ ``-g``: Run with an external gravitational potential.
++ ``-G``: Run with self-gravity.
++ ``-M``: Reconstruct the multipoles every time-step.
++ ``-n``: {int} Execute a fixed number of time steps. When unset use the
+  time_end parameter to stop.
++ ``-P``: {sec:par:val} Set parameter value and overwrites values read from the
+  parameters file. Can be used more than once.
++ ``-s``: Run with hydrodynamics.
++ ``-S``: Run with stars.
++ ``-t``: {int} The number of threads to use on each MPI rank. Defaults to 1 if
+  not specified.
++ ``-T``: Print timers every time-step.
++ ``-v``: [12] Increase the level of verbosity: 1, MPI-rank 0 writes, 2, All
+  MPI-ranks write.
++ ``-y``: {int} Time-step frequency at which task graphs are dumped.
++ ``-Y``: {int} Time-step frequency at which threadpool tasks are dumped.
++ ``-h``: Print a help message and exit.
+
diff --git a/doc/RTD/source/GettingStarted/what_about_mpi.rst b/doc/RTD/source/GettingStarted/what_about_mpi.rst
new file mode 100644
index 0000000000000000000000000000000000000000..098fd35d80d71866cb86d2342d5d54710cd73a82
--- /dev/null
+++ b/doc/RTD/source/GettingStarted/what_about_mpi.rst
@@ -0,0 +1,12 @@
+.. What about MPI? Running SWIFT on more than one node
+   Josh Borrow, 5th April 2018
+
+What about MPI? Running SWIFT on more than one node
+===================================================
+
+After compilation, you will be left with two binaries. One is called ``swift``,
+and the other ``swift_mpi``. Current wisdom is to run ``swift`` if you are only
+using one node (i.e. without any interconnect), and one MPI rank per NUMA
+region using ``swift_mpi`` for anything larger. You will need some GADGET-2
+HDF5 initial conditions to run SWIFT, as well as a compatible yaml
+parameterfile.
diff --git a/doc/RTD/source/HydroSchemes/adding_your_own.rst b/doc/RTD/source/HydroSchemes/adding_your_own.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2d7e640f66153a17e19f4e4c456cd37eed19a95a
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/adding_your_own.rst
@@ -0,0 +1,119 @@
+.. Adding Hydro Schemes
+   Josh Borrow, 5th April 2018
+
+
+Adding Hydro Schemes
+====================
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+   :caption: Contents:
+
+SWIFT is engineered to enable you to add your own hydrodynamics schemes easily.
+We enable this through the use of header files to encapsulate each scheme.
+
+Note that it's unlikely you will ever have to consider paralellism or 'loops over
+neighbours' for SWIFT; all of this is handled by the tasking system. All we ask
+for is the interaction functions that tell us how to a) compute the density
+and b) compute forces.
+
+
+Getting Started
+---------------
+
+The hydro schemes are stored in ``src/hydro``. You will need to create a folder
+with a sensible name that you are going to store your scheme-specific information
+in. Then, you will need to create the following files:
+
++ ``hydro.h``, which includes functions that are applied to particles at the end
+  of the density loop and beginning of the force loop, along with helper functions
++ ``hydro_debug.h``, which includes a quick function that prints out your particle
+  properties for debugging purposes
++ ``hydro_iact.h`` that includes the interaction functions
++ ``hydro_io.h`` which includes the information on what should be read from the
+  initial conditions file, as well as written to the output files
++ ``hydro_part.h`` which includes your particle definition. SWIFT uses an array-of
+  -structures scheme.
+
+
+``hydro.h``
+-----------
+
+As previously noted, ``hydro.h`` includes the helper functions for your scheme. You
+will need to 'fill out' the following:
+
++ ``hydro_get_comoving_internal_energy(p)`` which returns the comoving internal energy
+  of your particles (typically this will just be ``p->u``).
++ ``hydro_get_physical_internal_energy(p, cosmo)`` which returns the physical internal
+  energy. You can use the ``a_factor_internal_energy`` from the ``cosmology`` struct.
++ ``hydro_get_comoving_pressure(p)`` which returns the comoving pressure.
++ ``hydro_get_comoving_entropy(p)`` which returns the comoving entropy.
++ ``hydro_get_physical_entropy(p, cosmo)`` which returns the physical entropy. In our
+  formalism, usually there is no conversion factor here so it is the same as the
+  comoving version.
++ ``hydro_get_comoving_soundspeed(p)`` which returns the comoving sound speed.
++ ``hydro_get_physical_soundspeed(p, cosmo)`` which returns the physical sound
+  speed. You can use the ``a_factor_sound_speed``.
++ ``hydro_get_comoving_density(p)`` which returns the comoving density.
++ ``hydro_get_physical_density(p, cosmo)`` which returns the physical density.
+  You can use the ``a3_inv`` member of the ``cosmology`` struct.
++ ``hydro_get_mass(p)`` returns the mass of particle ``p``.
++ ``hydro_get_drifted_velocities(p, xp, dt_kick_hydro, dt_kick_grav, v[3])`` gets
+  the drifted velocities; this is just ``a_hydro * dt_kick_hydro`` + ``a_grav *
+  dt_kick_grav`` in most implementations.
++ ``hydro_get_energy_dt(p)`` returns the time derivative of the (comoving) internal
+  energy of the particle.
++ ``hydro_set_energy_dt(p)`` sets the time derivative of the (comoving) internal
+  energy of the particle.
++ ``hydro_compute_timestep(p, xp, hydro_props, cosmo)`` returns the timestep for 
+  the hydrodynamics particles.
++ ``hydro_timestep_extra(p, dt)`` does some extra hydro operations once the
+  physical timestel for the particle is known.
++ ``hydro_init_part(p, hydro_space)`` initialises the particle in preparation for
+  the density calculation. This essentially sets properties, such as the density,
+  to zero.
++ ``hydro_end_density(p, cosmo)`` performs operations directly after the density
+  loop on each particle. Note that you will have to add a particle's self-contribution
+  at this stage as particles are never 'interacted' with themselves.
++ ``hydro_part_has_no_neighbours(p, xp, cosmo)`` resets properties to a sensible
+  value if a particle is found to have no neighbours.
++ ``hydro_prepare_force(p, xp, cosmo)`` is computed for each particle before the
+  force loop. You can use this to pre-compute particle properties that are used
+  in the force loop, but only depend on the particle itself.
++ ``hydro_reset_acceleration(p)`` resets the acceleration variables of the particles
+  to zero in preparation for the force loop.
++ ``hydro_predict_extra(p, xp, dt_drift, dt_therm)`` predicts extra particle properties
+  when drifting, such as the smoothing length.
++ ``hydro_end_force(p, cosmo)`` is called after the force loop for each particle and 
+  can be used to e.g. include overall factors of the smoothing length.
++ ``hydro_kick_extra(p, xp, dt_therm)`` kicks extra variables.
++ ``hydro_convert_quantities(p, xp)`` converts quantities at the start of a run (e.g.
+  internal energy to entropy).
++ ``hydro_first_init_part(p, xp)`` is called for every particle at the start of a run
+  and is used to initialise variables.
+
+
+``hydro_debug.h``
+-----------------
+
+TBD
+
+
+``hydro_iact.h``
+----------------
+
+TBD
+
+
+``hydro_io.h``
+--------------
+
+TBD
+
+
+``hydro_part.h``
+----------------
+
+TBD
+
diff --git a/doc/RTD/source/HydroSchemes/gizmo.rst b/doc/RTD/source/HydroSchemes/gizmo.rst
new file mode 100644
index 0000000000000000000000000000000000000000..de6db297f8661404330493a45dc9f5771138e7ae
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/gizmo.rst
@@ -0,0 +1,20 @@
+.. GIZMO (MFV)
+   Josh Borrow, 5th April 2018
+
+GIZMO-Like Scheme
+=================
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+   :caption: Contents:
+
+
+There is a meshless finite volume (MFV) GIZMO-like scheme implemented in SWIFT
+(see Hopkins 2015 for more information). You will need a Riemann solver to run
+this, and configure as follows:
+
+.. code-block:: bash
+   
+   ./configure --with-hydro="gizmo" --with-riemann-solver="hllc" --disable-vec
+
diff --git a/doc/RTD/source/HydroSchemes/hopkins_sph.rst b/doc/RTD/source/HydroSchemes/hopkins_sph.rst
new file mode 100644
index 0000000000000000000000000000000000000000..49add2b2b19ca7d1d52058f2a466881dfa0f1b7a
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/hopkins_sph.rst
@@ -0,0 +1,24 @@
+.. 'Hopkins'-SPH
+   Josh Borrow 5th April 2018
+
+Pressure-Entropy SPH
+====================
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+   :caption: Contents:
+
+A pressure-entropy SPH scheme is available in SWIFT, inspired by Hopkins 2013.
+This includes a Monaghan AV scheme and a Balsara switch.
+
+
+.. code-block:: bash
+   
+   ./configure --with-hydro="hopkins"
+
+
+Pressure-Energy SPH
+===================
+
+A pressure-energy SPH scheme is currently being implemented in SWIFT.
diff --git a/doc/RTD/source/HydroSchemes/index.rst b/doc/RTD/source/HydroSchemes/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..cd6c169245e83440a1258d216991763488586c0c
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/index.rst
@@ -0,0 +1,21 @@
+.. Hydrodynamics Schemes
+   Josh Borrow 4th April 2018
+
+.. _hydro:
+   
+Hydrodynamics Schemes
+=====================
+
+This section of the documentation includes information on the hydrodynamics
+schemes available in SWIFT, as well as how to implement your own.
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   traditional_sph
+   minimal_sph
+   hopkins_sph
+   gizmo
+   adding_your_own
+
diff --git a/doc/RTD/source/HydroSchemes/minimal_sph.rst b/doc/RTD/source/HydroSchemes/minimal_sph.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0440f6c7afade727d57131143934933d285bc8b5
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/minimal_sph.rst
@@ -0,0 +1,15 @@
+.. Minimal SPH
+   Josh Borrow 4th April 2018
+
+Minimal (Density-Energy) SPH
+============================
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+   :caption: Contents:
+
+This scheme is a textbook implementation of Density-Energy SPH, and can be used
+as a pedagogical example. It also implements a Monaghan AV scheme, like the
+GADGET-2 scheme. It uses very similar equations, but differs in implementation
+details.
diff --git a/doc/RTD/source/HydroSchemes/traditional_sph.rst b/doc/RTD/source/HydroSchemes/traditional_sph.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c69ea5f60644119b8590414ffe00a75246de49a6
--- /dev/null
+++ b/doc/RTD/source/HydroSchemes/traditional_sph.rst
@@ -0,0 +1,17 @@
+.. Traditional SPH (GADGET-2)
+   Josh Borrow 4th April 2018
+
+Traditional (Density-Entropy) SPH
+=================================
+
+.. toctree::
+   :maxdepth: 2
+   :hidden:
+   :caption: Contents:
+
+Traditional, GADGET-2-like, Density-Entropy SPH is available in SWIFT with
+a Monaghan artificial viscosity scheme and Balsara switch.
+
+To use this hydro scheme, you need no extra configuration options -- it is the
+default!
+
diff --git a/doc/RTD/source/InitialConditions/index.rst b/doc/RTD/source/InitialConditions/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e9684ac4ffde5886f7a110de2cd7fb0fbb572a5e
--- /dev/null
+++ b/doc/RTD/source/InitialConditions/index.rst
@@ -0,0 +1,176 @@
+.. Initial Conditions
+   Josh Borrow, 5th April 2018
+
+Initial Conditions
+==================
+
+To run anything more than examples from our suite, you will need to be able to 
+produce your own initial conditions for SWIFT. We use the same initial conditions
+as the popular GADGET-2 code, which uses the HDF5 file format.
+
+As the original documentation for the GADGET-2 initial conditions format is
+quite sparse, we lay out here all of the necessary components. If you are generating
+your initial conditions from python, we recommend you use the h5py package. We
+provide a writing wrapper for this for our initial conditions in
+``examples/KeplerianRing/write_gadget.py``.
+
+You can find out more about the HDF5 format on their webpages, here:
+https://support.hdfgroup.org/HDF5/doc/H5.intro.html
+
+
+Structure of the File
+---------------------
+
+There are several groups that contain 'auxilliary' information, such as ``Header``.
+Particle data is placed in groups that signify particle type.
+
++---------------------+------------------------+
+| Group Name          | Physical Particle Type |
++=====================+========================+
+| ``PartType0``       | Gas                    |
++---------------------+------------------------+
+| ``PartType1``       | Dark Matter            |
++---------------------+------------------------+
+| ``PartType2``       | Ignored                |
++---------------------+------------------------+
+| ``PartType3``       | Ignored                |
++---------------------+------------------------+
+| ``PartType4``       | Stars                  |
++---------------------+------------------------+
+| ``PartType5``       | Black Holes            |
++---------------------+------------------------+
+
+Currently, not all of these particle types are included in SWIFT. Note that the
+only particles that have hydrodynamical forces calculated between them are those
+in ``PartType0``.
+
+
+Necessary Components
+--------------------
+
+There are several necessary components (in particular header information) in a
+SWIFT initial conditions file. Again, we recommend that you use the ``write_gadget``
+script.
+
+Header
+~~~~~~
+
+In ``Header``, the following attributes are required:
+
++ ``BoxSize``, a floating point number or N-dimensional (usually 3) array
+  that describes the size of the box.
++ ``Flag_Entropy_ICs``, a historical value that tells the code if you have
+  included entropy or internal energy values in your intial conditions files.
+  Acceptable values are 0 or 1.
++ ``NumPart_Total``, a length 6 array of integers that tells the code how many
+  particles are of each type are in the initial conditions file.
++ ``NumPart_Total_HighWord``, a historical length-6 array that tells the code 
+  the number of high word particles in the initial conditions there are. If
+  you are unsure, just set this to ``[0, 0, 0, 0, 0, 0]``. This does have to be
+  present, but unlike GADGET-2, this can be a set of 0s unless you have more than
+  2^31 particles.
++ ``NumFilesPerSnapshot``, again a historical integer value that tells the code
+  how many files there are per snapshot. You will probably want to set this to 1
+  and simply have a single HDF5 file for your initial conditions; SWIFT can
+  leverage parallel-HDF5 to read from this single file in parallel.
++ ``NumPart_ThisFile``, a length 6 array of integers describing the number of
+  particles in this file. If you have followed the above advice, this will be
+  exactly the same as the ``NumPart_Total`` array.
+
+You may want to include the following for backwards-compatibility with many
+GADGET-2 based analysis programs:
+
++ ``MassTable``, an array of length 6 which gives the masses of each particle
+  type. SWIFT ignores this and uses the individual particle masses, but some
+  programs will crash if it is not included.
++ ``Time``, the internal code time of the start (set this to 0).
+
+RuntimePars
+~~~~~~~~~~~
+
+In ``RuntimePars``, the following attributes are required:
+
++ ``PeriodicBoundaryConditionsOn``, a flag to tell the code whether or not you
+  have periodic boundaries switched on. Again, this is historical; it should be
+  set to 1 (default) if you have the code running in periodic mode, or 0 otherwise.
+
+
+Units
+~~~~~
+
+In ``Units``, you will need to specify what units your initial conditions are
+in. If these are not present, the code assumes that you are using the same
+units for your initial conditions as are in your parameterfile, but it is best
+to include them to be on the safe side. You will need:
+
++ ``Unit current in cgs (U_I)``
++ ``Unit length in cgs (U_L)``
++ ``Unit mass in cgs (U_M)``
++ ``Unit temperature in cgs (U_T)``
++ ``Unit time in cgs (U_t)``
+
+These are all floating point numbers.
+
+
+Particle Data
+~~~~~~~~~~~~~
+
+Now for the interesting part! You can include particle data groups for each
+individual particle type (e.g. ``PartType0``) that have the following _datasets_:
+
++ ``Coordinates``, an array of shape (N, 3) where N is the number of particles
+  of that type, that are the cartesian co-ordinates of the particles. Co-ordinates
+  must be positive, but will be wrapped on reading to be within the periodic box.
++ ``Velocities``, an array of shape (N, 3) that is the cartesian velocities 
+  of the particles.
++ ``ParticleIDs``, an array of length N that are unique identifying numbers for
+  each particle. Note that these have to be unique to a particle, and cannot be
+  the same even between particle types. Please ensure that your IDs are positive
+  integer numbers.
++ ``Masses``, an array of length N that gives the masses of the particles.
+
+For ``PartType0`` (i.e. particles that interact through hydrodynamics), you will
+need the following auxilliary items:
+
++ ``InternalEnergy``, an array of length N that gives the internal energies of
+  the particles. For PressureEntropy, you can specify ``Entropy`` instead.
++ ``SmoothingLength``, the smoothing lenghts of the particles. These will be
+  tidied up a bit, but it is best if you provide accurate numbers.
+
+
+Summary
+~~~~~~~
+
+You should have an HDF5 file with the following structure:
+
+.. code-block:: bash
+
+   Header/
+     BoxSize=[x, y, z]
+     Flag_Entropy_ICs=1
+     NumPart_Total=[0, 1, 2, 3, 4, 5]
+     NumPart_Total_HighWord=[0, 0, 0, 0, 0, 0]
+     NumFilesPerSnapshot=1
+     NumPart_ThisFile=[0, 1, 2, 3, 4, 5]
+   RuntimePars/
+     PeriodicBoundariesOn=1
+   Units/
+     Unit current in cgs (U_I)=1.0
+     Unit length in cgs (U_L)=1.0
+     Unit mass in cgs (U_M)=1.0
+     Unit temperature in cgs (U_T)=1.0
+     Unit time in cgs (U_t)=1.0
+   PartType0/
+     Coordinates=[[x, y, z]]
+     Velocities=[[vx, vy, vz]]
+     ParticleIDs=[...]
+     Masses=[...]
+     InternalEnergy=[...]
+     SmoothingLength=[...]
+   PartType1/
+     Coordinates=[[x, y, z]]
+     Velocities=[[vx, vy, vz]]
+     ParticleIDs=[...]
+     Masses=[...]
+
+
diff --git a/doc/RTD/source/NewOption/index.rst b/doc/RTD/source/NewOption/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a7445524017fefd99d76c80a4a1ecc646874bd7a
--- /dev/null
+++ b/doc/RTD/source/NewOption/index.rst
@@ -0,0 +1,36 @@
+.. Equation of State
+   Loic Hausammann, 7th April 2018
+
+.. _new_option:
+   
+General information for adding new schemes
+==========================================
+
+The following steps are required for any new options (such as new
+:ref:`hydro`, :ref:`chemistry`, :ref:`cooling`,
+:ref:`equation_of_state`, :ref:`stars` or :ref:`gravity`)
+   
+In order to add a new scheme, you will need to:
+
+1. Create a new subdirectory inside the option directory (e.g.
+   ``src/equation_of_state`` or ``src/hydro``) with an explicit name.
+
+2. Create the required new files (depending on your option, you will need
+   different files).  Copy the structure of the most simple option (e.g.
+   ``src/hydro/Gadget2``, ``src/gravity/Default``, ``src/stars/Default``,
+   ``src/cooling/none``, ``src/chemistry/none`` or
+   ``src/equation_of_state/ideal_gas``)
+
+3. Add the right includes in the option file (e.g. ``src/hydro.h``,
+   ``src/gravity.h``, ``src/stars.h``, ``src/cooling.h``, ``src/chemistry.h``
+   or ``src/equation_of_state.h``) and the corresponding io file if present.
+
+4. Add the new option in ``configure.ac``.  This file generates the
+   ``configure`` script and you just need to add a new option under the right
+   ``case``.
+
+5. Add your files in ``src/Makefile.am``.  In order to generate the Makefiles
+   during the configuration step, a list of files is required. In
+   ``nobase_noinst_HEADERS``, add your new header files.
+
+6. Update the documentation.  Add your equations/documentation to ``doc/RTD``.
diff --git a/doc/RTD/source/conf.py b/doc/RTD/source/conf.py
new file mode 100644
index 0000000000000000000000000000000000000000..031687ea5228252e2d2e44ec0bd6f53b1b64d732
--- /dev/null
+++ b/doc/RTD/source/conf.py
@@ -0,0 +1,165 @@
+# -*- coding: utf-8 -*-
+#
+# Configuration file for the Sphinx documentation builder.
+#
+# This file does only contain a selection of the most common options. For a
+# full list see the documentation:
+# http://www.sphinx-doc.org/en/stable/config
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- Project information -----------------------------------------------------
+
+project = 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking'
+copyright = '2018, SWIFT Collaboration'
+author = 'SWIFT Team'
+
+# The short X.Y version
+version = '0.7'
+# The full version, including alpha/beta/rc tags
+release = '0.7.0'
+
+
+# -- General configuration ---------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.todo',
+    'sphinx.ext.mathjax',
+    'sphinx.ext.githubpages',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path .
+exclude_patterns = []
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'sphinx_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['.static']
+
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+# The default sidebars (for documents that don't match any pattern) are
+# defined by theme itself.  Builtin themes are using these templates by
+# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
+# 'searchbox.html']``.
+#
+# html_sidebars = {}
+
+
+# -- Options for HTMLHelp output ---------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'SWIFTSPHWIthFine-grainedinter-dependentTaskingdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'SWIFTSPHWIthFine-grainedinter-dependentTasking.tex', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation',
+     'Josh Borrow', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'swiftsphwithfine-grainedinter-dependenttasking', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation',
+     [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'SWIFTSPHWIthFine-grainedinter-dependentTasking', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation',
+     author, 'SWIFTSPHWIthFine-grainedinter-dependentTasking', 'One line description of project.',
+     'Miscellaneous'),
+]
+
+
+# -- Extension configuration -------------------------------------------------
+
+# -- Options for todo extension ----------------------------------------------
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
diff --git a/doc/RTD/source/index.rst b/doc/RTD/source/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..888945a5c0101bb6f59b574a30f1f736ad134079
--- /dev/null
+++ b/doc/RTD/source/index.rst
@@ -0,0 +1,22 @@
+.. Welcome!
+   sphinx-quickstart on Wed Apr  4 15:03:50 2018.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to SWIFT: SPH WIth Fine-grained inter-dependent Tasking's documentation!
+================================================================================
+
+Want to get started using SWIFT? Check out the on-boarding guide available
+here. SWIFT can be used as a drop-in replacement for Gadget-2 and initial
+conditions in hdf5 format for Gadget can directly be read by SWIFT. The only
+difference is the parameter file that will need to be adapted for SWIFT.
+
+.. toctree::
+   :maxdepth: 2
+
+   GettingStarted/index
+   InitialConditions/index
+   HydroSchemes/index
+   Cooling/index
+   EquationOfState/index
+   NewOption/index