diff --git a/.gitignore b/.gitignore
index dca6393f4542d7032ac92bcebd4bedfe465222c6..544034f37bcad9646e87ba19e5d50ad66e6f7c1f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,6 @@ env/*
 data/about.yaml
 data/pubs.yaml
 *.pyc
+
+gallery/*
+user_map/*
diff --git a/README.md b/README.md
index b005d6b561dc1b6a3f8e2d13b4f253f431fd379e..b3dba2773bd72f212356f317f0a460c7326f5745 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,9 @@ This is the website for the SWIFT project. You can build the website by doing th
 + Activate it (`` source env/bin/activate ``) [note to deactivate you want to use the `` deactivate `` keyword in your shell]
 + Use that virtual environment to install the required packages (`` pip install -r requirements.txt ``)
 + If ```pandoc``` is installed on your machine, I would recommend also installing ```pypandoc```. If not, then the system will use the ```mistune``` python-only renderer.
++ Place all the images listed in `data/gallery.yaml` in the `gallery` directory
++ Run `python generate_map.py` to generate the map of swift users
++ Run `python query.py rLY4HeXMXttDOSedTGrYuRufATu2gDwgE84Hqy3B` to generate the publication list
 + You can then compile the website by running `` python3 compiler.py `` from this directory. The conpiled files will be placed in `` ./compiled ``, and they can then simply be uploaded to a webserver. It is a fully static website so no need to worry about installing anything!
 
 Adding to the Website
diff --git a/compiler.py b/compiler.py
index ea06753df84403d948cd45eeb5aafd3385ea9283..e7aec73e28320a6869682909f8bf377bf348968c 100644
--- a/compiler.py
+++ b/compiler.py
@@ -5,7 +5,7 @@
 """
 
 import os
-from distutils.dir_util import copy_tree
+from shutil import copytree
 
 import jinja2
 import yaml
@@ -130,9 +130,10 @@ def copy_static(directories, output_dir):
     """ Copies the (static) files from the original directory to the output """
     if isinstance(directories, list):
         for directory in directories:
-            copy_tree(directory, output_dir)
+            print(directory)
+            copytree(directory, output_dir, dirs_exist_ok=True)
     else:
-        copy_tree(directories, output_dir)
+        copytree(directories, output_dir, dirs_exist_ok=True)
 
     return
 
@@ -149,14 +150,15 @@ if __name__ == "__main__":
         "gallery.html",
         "pubs.html",
         "about.html",
-        "contact.html"
+        "users.html"
     ]
 
     STATIC = [
         "stylesheets",
         "images",
         "javascript",
-        "gallery"
+        "gallery",
+        "user_map",
     ]
 
     print("Compiling markdown to HTML and saving in the about.yaml file...")
diff --git a/data/contact.md b/data/contact.md
deleted file mode 100644
index fa34f5584a2ee5ad6014624160786d13038c76f5..0000000000000000000000000000000000000000
--- a/data/contact.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## Contact Us
-
-Hello there!
-
-You can easily reach the team via our <a href="https://app.gitter.im/#/room/#swiftsim_Lobby:gitter.im">Gitter</a>.
-
-### E-mail
-
-You can also join our <a href="https://mail.strw.leidenuniv.nl/mailman/listinfo/swift-users">mailing list</a>.
-This is a low-traffic, announcement-only list to keep updated on releases and other important changes.
-
-Alternatively, you can contact us using the form below. <br/>
-
-<form action="https://formspree.io/f/xzbqkdyk" method="POST">
-<label for="name"><h4>Name</h4></label>
-<input type="text" name="name">
-<label for="email"><h4>Email</h4></label>
-<input type="email" name="_replyto">
-<label for="content"><h4>Content</h4></label>
-<textarea name="content" placeholder="Your message here..."></textarea>
-
-<input type="hidden" name="_subject" id="email-subject" value="Contact Form Submission">
-<input type="submit" value="Send" class="btn btn-blue send">
-</form>
-
-### Postal
-
-If you would prefer to contact us through the post, you can do that at the following address:
-
-The SWIFT team (M. Schaller) <br/>
-Instituut-Lorentz for Theoretical Physics  <br/>
-P.O. Box 9506 <br/>
-NL-2300 RA Leiden <br/>
-The Netherlands <br/>
diff --git a/data/contact.yaml b/data/contact.yaml
deleted file mode 100644
index 4bde360a998ad9495f21d7f558d2f4194ce3154f..0000000000000000000000000000000000000000
--- a/data/contact.yaml
+++ /dev/null
@@ -1,149 +0,0 @@
-people: [
-  {
-    name: Dr. Matthieu Schaller,
-    role: Project PI,
-    affil: "Lorentz Institute & Leiden Observatory",
-    href: "https://www.matthieuschaller.com",
-    expertise: Lead-developer,
-  },
-  {
-    name: Dr. Joshua Borrow,
-    href: "https://joshborrow.com/",
-    affil: "MIT",
-    expertise: "Hydrodynamics Scheme"
-  },
-  {
-    name: Dr. Peter Draper,
-    affil: "ICC, Durham University",
-    expertise: "Parallelization, domain decomposition",
-    href: "https://www.durham.ac.uk/staff/p-w-draper/",
-  },
-  {
-    name: Dr. Mladen Ivkovic,
-    affil: "Department of Computer Science, Durham University",
-    expertise: "Hydodynamics Schemes, Radiative transfer",
-    href: "https://www.durham.ac.uk/staff/mladen-ivkovic/",
-  },
-  {
-    name: Dr. Stuart McAlpine,
-    affil: "The Oskar Klein Centre, Stockholm University",
-    expertise: "Gravity, zoom-in simulations",
-    href: "https://smcalpine.com/",
-  },
-  {
-    name: Dr. Bert Vandenbroucke,
-    href: "https://home.strw.leidenuniv.nl/~vandenbroucke/",
-    expertise: "Hydrodynamics and numerical schemes",
-  },
-  {
-  name: Dr. Yannick Bahe,
-  affil: "LASTRO, EPFL",
-  href: "https://home.strw.leidenuniv.nl/~bahe/",
-  expertise: "Sub-grid models"
-  },
-  {
-    name: Evgenii Chaikin,
-    affil: "Leiden Observatory",
-    href: "https://local.strw.leidenuniv.nl/people/pers.php?id=5181",
-    expertise: "Sub-grid models"
-  },
-  {
-    name: Dr. Aidan Chalk,
-    href: "https://scholar.google.co.uk/citations?user=55JKkoEAAAAJ&hl=en",
-    affil: "STFC Daresbury Laboratory",
-    expertise: "Parallelization, GPU, Domain decomposition"
-  },
-  {
-    name: Dr. TK Chan,
-    href: "https://astrophysics.uchicago.edu/people/profile/tsang-keung-chan/",
-    affil: "University of Chicago",
-    expertise: "Radiative transfer",
-  },  
-  {
-    name: Dr. Camila Correa,
-    href: "https://www.camilacorrea.com/",
-    affil: "GRAPPA, University of Amsterdam",
-    expertise: "Self-interacting dark matter",
-  },
-  {
-    name: Dr. Marcel van Daalein,
-    affil: "Leiden Observatory",
-    href: "https://home.strw.leidenuniv.nl/~daalen/",
-  },
-  {
-    name: Willem Elbers,
-    affil: "ICC, Durham University",
-    href: "https://willemelbers.com/",
-    expertise: "Cosmology, Neutrinos",
-  },
-  {
-    name: Dr. Pedro Gonnet,
-    href: "https://scholar.google.com/citations?user=IqOpdUkAAAAJ&hl=en",
-    affil: "Google Switzerland",
-    expertise: "Task-based parallelism, Algorithms",
-  },
-  {
-    name: Dr. Loic Hausammann,
-    href: "https://ethz.ch/staffnet/en/organisation/departments/it-services/people/person-detail.MzExMTAz.TGlzdC80NDI5LC04NTM1NzczMTQ=.html",
-    affil: "EPFZ"
-  },
-  {
-    name: Dr John Helly,
-    href: "https://www.durham.ac.uk/staff/j-c-helly/",
-    affil: "ICC, Durham University",
-    expertise: "Light-cones, very large simulations",
-  },
-  {
-    name: Filip Husko,
-    affil: "ICC, Durham University",
-    href: "https://www.durham.ac.uk/staff/filip-husko/",
-    expertise: "Sub-grid models"
-  },
-  {
-    name: Dr. Jacob Kegerreis,
-    affil: "NASA Ames",
-    expertise: "Planetary giant impacts",
-    href: "http://astro.dur.ac.uk/~cklv53/"
-  },
-  {
-    name: Folkert Nobels,
-    affil: "Leiden Observatory",
-    href: "https://home.strw.leidenuniv.nl/~nobels/",
-    expertise: "Sub-grid models"
-  },
-  {
-    name: Dr. Sylvia Ploeckinger,
-    affil: "Department of Astrophysics, Vienna",
-    href: "https://www.sylviaploeckinger.com/",
-    expertise: "Sub-grid models"
-  },
-  {
-    name: Dr. Yves Revaz,
-    affil: "LASTRO, EPFL",
-    href: "https://people.epfl.ch/yves.revaz?lang=en",
-    expertise: "Sub-grid models"
-  },
-  {
-    name: Dr. Will Roper,
-    affil: "University of Sussex",
-    href: "https://profiles.sussex.ac.uk/p352567-william-roper",
-    expertise: "Zoom-in simulations",
-  },
-  {
-    name: Thomas Sandnes,
-    affil: "ICC, Durham University",
-    href: "https://www.durham.ac.uk/staff/thomas-d-sandnes/",
-    expertise: "Planetary simulations"    
-  },
-  {
-    name: Yolan Uyttenhove,
-    affil: "Ghent University",
-    expertise: "Hydrodyanmics schemes",
-  },
-  {
-    name: James Willis,
-    href: "https://scholar.google.com/citations?user=vj6vz9MAAAAJ&hl=en",
-    affil: "SciNet HPC Consortium, University of Toronto",
-    expertise: "Vectorization, FOF algorithm",
-  },
-]
diff --git a/data/global.yaml b/data/global.yaml
index 807d20914a458f9b903128a361b55f395dd5b07f..1ea94dd7dc7252dd02468a6c014f4e4ab2a53bd8 100644
--- a/data/global.yaml
+++ b/data/global.yaml
@@ -9,5 +9,5 @@ navbar: [
   [About, "about.html"],
   [Gallery, "gallery.html"],
   [Publications, "pubs.html"],
-  [Contact, "contact.html"]
+  [Users, "users.html"]
 ]
diff --git a/data/swift_users.txt b/data/swift_users.txt
new file mode 100644
index 0000000000000000000000000000000000000000..01ff12a6e521adf52df1ea75cb0a57cd0892e364
--- /dev/null
+++ b/data/swift_users.txt
@@ -0,0 +1,50 @@
+Category        Name                        Latitude    Longitude   Description
+Core            "Durham University"         54.7767     -1.5747     "Cosmological simulations"
+Core            "Universiteit Leiden"       52.1600     4.4900      "Cosmological simulations"
+Community       "EPFL"                      46.5167     6.6333      "Cosmological simulations"
+Community       "University of Sussex"      50.8647     -0.0831     "Cosmological simulations"
+Community       "MIT"                       42.3601     -71.0942    "Cosmological simulations"
+Community       "University of Manchester"  53.4794     -2.2453     "Cosmological simulations"
+Community       "University of Edinburgh"   55.9533     -3.1883     "Cosmological simulations"
+Community       "LJMU"                      53.4084     -2.9604     "Cosmological simulations"
+Community       "University of Hull"        53.7750     -0.3743     "Cosmological simulations"
+Community       "University of Portsmouth"  50.7989     -1.0917     "Cosmological simulations"
+Community       "University of Glasgow"     55.8724     -4.2902     "Cosmological simulations"
+Community       "University of Exeter"      50.7369     -3.5340     "Cosmological simulations"
+Community       "Imperial College London"   51.5072     -0.1276     "Cosmological simulations"
+Community       "University of Bristol"     51.4545     -2.5879     "Cosmological simulations"
+Community       "Milan"                     45.4669     9.19        "Cosmological simulations"
+Community       "Warsaw"                    52.2370     21.0175     "Cosmological simulations"
+Community       "Universty of Amsterdam"    52.3667     4.9000      "Cosmological simulations"
+Community       "Stockholm"                 59.3294     18.0686     "Cosmological simulations"
+Community       "Helsinki"                  60.1920     24.945831   "Cosmological simulations"
+Community       "Potsdam"                   52.3989     13.0656     "Cosmological simulations"
+Community       "Hong Kong"                 22.3964     114.1095    "Cosmological simulations"
+Community       "Vienna"                    48.2082     16.3738     "Cosmological simulations"
+Community       "Perth"                     -31.955     115.8605    "Cosmological simulations"
+Community       "Ghent"                     51.0500     3.7333      "Cosmological simulations"
+Community       "Paris"                     48.8566     2.3522      "Cosmological simulations"
+Community       "Santiago"                  -33.448     -70.6693    "Cosmological simulations"
+Community       "Cordoba"                   -31.416     -64.1833    "Cosmological simulations"
+Community       "NASA Ames"                 37.4085     -122.0634   "Cosmological simulations"
+Community       "New York"                  40.7128     -74.0060    "Cosmological simulations"
+Community       "CCA"                       34.0522     -118.2437   "Cosmological simulations"
+Community       "Penn State"                40.7982     -77.8601    "Cosmological simulations"
+Community       "Oslo"                      59.9139     10.7522     "Cosmological simulations"
+Community       "UC Davis"                  38.5449     -121.7405   "Cosmological simulations"
+Community       "Weizmann institutes"       31.9047     34.8352     "Cosmological simulations"
+Community       "Carnegie Mellon"           40.4433     -79.9436    "Cosmological simulations"
+Community       "Caltech"                   34.1377     -118.1253   "Cosmological simulations"
+Community       "SETI Institute"            37.3872     -122.050    "Cosmological simulations"
+Community       "Tokyo Tech"                35.6528     139.7735    "Cosmological simulations"
+Community       "UC Santa Cruz"             36.9741     -122.0308   "Cosmological simulations"
+Community       "Johns Hopkins"             39.1073     -76.8597    "Cosmological simulations"
+Community       "Cape Town"                 -33.922     18.4231     "Cosmological simulations"
+Community       "Mexico City"               19.4326     -99.1332    "Cosmological simulations"
+Community       "Buenos Aires"              -34.6037    -58.3821    "Cosmological simulations"
+Community       "Sydney"                    -33.8688    151.2093    "Cosmological simulations"
+Community       "Los Alamos"                35.8800     -106.3031   "Cosmological simulations"
+Community       "Maynooth"                  53.3815     -6.5910     "Cosmological simulations"
+Community       "Kiev"                      50.4504     30.5245     "Cosmological simulations"
+Community       "Arizona State University"  33.4245     -111.928    "Cosmological simulations"
+Community       "SwRI"                      40.0174     -105.2781   "Cosmological simulations"
diff --git a/data/talks.yaml b/data/talks.yaml
deleted file mode 100644
index 84c2a2d09230b0a7d9d51d77d8a19de7185c78d6..0000000000000000000000000000000000000000
--- a/data/talks.yaml
+++ /dev/null
@@ -1,230 +0,0 @@
-# Locally stored talk files should be stored in a top-level directory 
-# that is placed into 'STATIC' in compiler.py. You can then refer to
-# the files as their filenames wtihout worrying about directory
-# references. Nominally we will use /talks.
-
-cards:
-  - meeting: 13th SPHERIC International Workshop
-    location: Galway, Ireland
-    date: 26 June 2018
-    title: "SWIFT: Maintaining weak-scalability with a dynamic range of 10^4 in time-step size to harness extreme adaptivity"
-    author: Josh Borrow, Matthieu Schaller
-    abstract: "Cosmological simulations require the use of a multiple
-    time-stepping scheme. Without such a scheme, cosmological
-    simulations would be impossible due to their high level of dynamic
-    range; over eleven orders of magnitude in density. Such a large
-    dynamic range leads to a range of over four orders of magnitude in
-    time-step, which presents a significant load-balancing
-    challenge. In this work, the extreme adaptivity that cosmological
-    simulations present is tackled in three main ways through the use
-    of the code SWIFT. First, an adaptive mesh is used to ensure that
-    only the relevant particles are interacted in a given
-    time-step. Second, task-based parallelism is used to ensure
-    efficient load-balancing within a single node, using pthreads and
-    SIMD vectorisation. Finally, a domain decomposition strategy is
-    presented, using the graph domain decomposition library METIS,
-    that bisects the work that must be performed by the simulation
-    between nodes using MPI. These three strategies are shown to give
-    SWIFT near-perfect weak-scaling characteristics, only losing 25%
-    performance when scaling from 1 to 4096 cores on a representative
-    problem, whilst being more than 30x faster than the de-facto
-    standard Gadget-2 code."
-    links:
-      - href: "SPHERIC_2018.pdf"
-        name: Slides
-      - href: "https://arxiv.org/abs/1807.01341"
-        name: Paper
-
-  - meeting: European Week of Astronomy and Space Science 2018
-    location: Liverpool, UK
-    date: April 2018
-    title: "The next-generation cosmological code SWIFT"
-    author: Matthieu Schaller
-    abstract: "One of the big challenges in simulations of galaxy
-    formation is to harness the raw computing power of the  largest
-    facilities.  With  current  codes  gravity+hydrodynamics code
-    achieving  less  than  0.1%  of  the  available flops, it is
-    important to revisit how we write code for such systems and how we
-    interact with the wider HPC community.
-
-    We  present  the  next-generation  open-source  cosmological  code
-    SWIFT,  created  as  a  joint  effort between  galaxy  formation
-    scientists  and  computer  scientists with  expertise  in
-    parallel  programming. Using task-based parallelism for intra-node
-    parallelisation, asynchronous communications for inter-node
-    communications and SIMD intrinsics for the code kernels, our code
-    is more than 30x faster than the de-facto standard Gadget code on
-    representative cosmological problems. The code also uses much
-    fewer resources allowing to run simulations an order of magnitude
-    larger than is currently doable (e.g. EAGLE, Illustris,
-    Horizon-AGN,...).
-
-    We  implement  multiple  SPH  and  unstructured  hydrodynamics
-    solvers as well as a full test suite to assess the accuracy of the
-    schemes in various situations. This test suite is part of the code
-    release and we highlight good programming practices to make
-    sure the software is usable by the community and interfaces well
-    with other tools (e.g. yt, paraview, ...)." 
-    links:
-      - href: "EWASS_2018.pdf"
-        name: Slides
-    
-
-  - meeting: Computational Galaxy Formation 2018
-    location: Ringberg Castle, Tegernsee, Germany
-    date: March 2018
-    title: "First steps towards cosmological simulations with full EAGLE physics"
-    author: Matthieu Schaller
-    abstract: "The SWIFT simulation code has now matured enough that we can start targeting large-scale simulations using the EAGLE physics model. In this talk
-    I will discuss the status of the code and present some ideas related to the domain decomposition that we implemented in order to tackle the challenge of
-    deep time-step hierarchies that develop in cosmological simulations. I will also present some weak-scaling plots demonstrating the ability of the code to scale
-    up to the largest systems in realistic scenarios."
-    links:
-      - href: "Ringberg_2018.pdf"
-        name: Slides
-    
-
-  - meeting: Supercomputing Frontiers Europe 2018
-    location: Warsaw, Poland
-    date: March 2018
-    title: "Individual time-stepping in cosmological simulations: A challenge for strong scaling and domain decomposition algorithms"
-    author: Matthieu Schaller
-    abstract: "For many decades cosmological simulations have used individual time-steps for the particles (or cells) that are evolved forward in time. Given the large range in time-step sizes
-    required for accurate integration, this allows substantial gains in time to solution compared to the more widely adopted in science technique of using a single time-step for the whole
-    computational domain. However, only limited work has been done to improve domain decomposition techniques to make them aware of this multiple time-stepping scheme. This results in domains
-    perfectly suited for time-steps where most particles require updating but leads to terrible performance with large levels of imbalance for the steps where only a small fraction of particles are
-    being updated. This generates poor overall strong-scaling performance and leads to a poor utilisation of the systems. 
-
-    In this paper, we will introduce some of these short-comings and present a solution based on task-based parallelism and a weighted graph domain decomposition algorithm implemented in the
-    open-source cosmological code SWIFT. By carefully weighting the different tasks in an overall cluster-wide graph, we can divide the work and not the data optimally. If we further penalise the
-    creation of communication tasks we can achieve a domain decomposition where no MPI communication is required for the time-steps with few active particles. This effectively eliminates most imbalance
-    issues and leads to optimal performance not just for time-steps with large number of updates but also for the ones with few particles to update. We achieve much better strong-scaling performance than
-    commonly used codes and achieve a time-to-solution 30 times smaller than the de-facto standard Gadget code."
-    links:
-      - href: "SuperComputingFrontiers_2018.pdf"
-        name: Slides
-
-  - meeting: SIAM Conference on Parallel Processing for Scientific Computing 2018
-    location: Tokyo, Japan
-    date: March 2018
-    title: "Using Task-Based Parallelism, Asynchronous MPI and Dynamic Workload-Based Domain Decomposition to Achieve Near-Perfect Load-Balancing for Particle-Based Hydrodynamics and Gravity"
-    author: Matthieu Schaller
-    links:
-      - href: "SIAM_2018.pdf"
-        name: Slides
-
-  - meeting: Intel HPC DevCon 2017
-    location: Denver, USA
-    date: November 2017
-    title: "Task-based Calculation + Task-based MPI + Task-based I/O = Maximal Performance"
-    author: Matthieu Schaller
-    abstract: "Traditional large HPC simulation codes rely on MPI  or
-    MPI plus OpenMP for their parallelization over clusters of more 
-    than 100,000 cores. This approach of task-based parallelism
-    strategy is used in SPH With Interdependent Fine-Grained Tasking,
-    or SWIFT. This open-source cosmological code makes use of
-    vectorization, dynamic scheduling, task-based I/O, and more."
-    links:
-      - href: "HPC_DevCon_2017.pdf"
-        name: Slides
-      - href: "https://software.intel.com/en-us/events/hpc-devcon/2017/parallel-programming?multiplayer=5646499531001"
-        name: Talk Movie
-        
-  - meeting: ParCo Conference 2017
-    location: Bologna, Italy
-    date: September 2017
-    title: "An Efficient SIMD Implementation of Pseudo-Verlet Lists for Neighbour Interactions in Particle-Based Codes"
-    author: James S. Willis
-    abstract: "In particle-based simulations, neighbour finding (i.e finding pairs of particles to interact within a given range) is the most time consuming part of the computation. One of the best such algorithms, which can be used for both Molecular Dynamics (MD) and Smoothed Particle Hydrodynamics (SPH) simulations is the pseudo-Verlet list algorithm. This algorithm, however, does not vectorize trivially, and hence makes it difficult to exploit SIMD-parallel architectures. In this paper, we present several novel modifications as well as a vectorization strategy for the algorithm which lead to overall speed-ups over the scalar version of the algorithm of 2.24x for the AVX instruction set (SIMD width of 8), 2.43x for AVX2, and 4.07x for AVX-512 (SIMD width of 16)."
-    links:
-      - href: "ParCo_2017_Bologna_Talk.pdf"
-        name: Slides
-      - href: "https://arxiv.org/abs/1804.06231"
-        name: Paper
-
-  - meeting: UK National Astronomy Meeting
-    location: Hull, UK 
-    date: July 2017 
-    title: The cosmological hydrodynamical code SWIFT
-    author: Matthieu Schaller
-    abstract: "We present the next-generation open-source cosmological code SWIFT. Using task-based parallelism for intra-node parallelisation, asynchronous communications for inter-node communications and SIMD intrinsics for the code kernels, our code is more than 20x faster than the de-facto standard Gadget code on representative cosmological problems. We implement multiple SPH and unstructured hydrodynamics solvers as well as a full test suite to assess the accuracy of the schemes in various situations. We expect to release the code to the public by the end of the summer. Current performance tests on 100k+ cores have been published in arxiv:1606.02738."
-    links:
-      - href: "NAM_2017.pdf"
-        name: Slides
-
-  - meeting: ISC Intel Booth talk
-    location: Frankfurt, Germany
-    date: June 2017 
-    title: "SWIFT: Using Task-Based Parallelism, Fully Asynchronous Communication and Vectorization to achieve maximal HPC performance"
-    author: James S. Willis
-    abstract: "We present a new open-source cosmological code, called swift, designed to solve the equations of hydrodynamics using a particle-based approach (Smooth Particle Hydrodynamics) on hybrid shared / distributed-memory architectures. Swift was designed from the bottom up to provide excellent strong scaling on both commodity clusters (Tier-2 systems) and Top100-supercomputers (Tier-0 systems), without relying on architecture-specific features or specialised accelerator hardware. This performance is due to three main computational approaches: - Task-based parallelism for shared-memory parallelism, which provides fine-grained load balancing and thus strong scaling on large numbers of cores. - Graph-based and genetic algorithm-based domain decomposition, which uses the task graph to decompose the simulation domain such that the work, as opposed to just the data, as is the case with most partitioning schemes, is equally distributed across all nodes. - Fully dynamic and asynchronous communication, in which communication is modelled as just another task in the task-based scheme, sending data whenever it is ready and deferring on tasks that rely on data from other nodes until it arrives, - Explicit vectorization of the core kernel to exploit all the available FLOPS on architectures such as Xeon Phi. In order to use these approaches, the code had to be rewritten from scratch, and the algorithms therein adapted to the task-based paradigm. As a result, we can show upwards of 60% parallel efficiency for moderate-sized problems when increasing the number of cores 512-fold on x86 architecture making SWIFT more than an order of magnitude faster than current alternative software."
-    links:
-      - href: "ISC_Intel_Booth_Talk_2017.pdf"
-        name: Slides
-
-  - meeting: IXPUG Annual Spring Conference
-    location: Cambridge, UK
-    date: April 2017 
-    title: "SWIFT: An efficient SIMD implementation of pseudo Verlet-lists for neighbour interactions in particle-based codes"
-    author: James S. Willis
-    abstract: "In molecular dynamics (MD) and smoothed particle hydrodynamics simulations (SPH), a set of particle interactions must be computed. Current algorithms that solve this problem using complex techniques to reduce the number of distance calculations do not translate well into SIMD instructions. Compilers tend to produce auto-vectorised code that is inefficient. Poor performance arises predominantly from branches in the code and inefficient memory access. We present new SIMD vectorisation strategies that address these issues. We implement a pseudo-Verlet list, a particle sorting algorithm, and our own vectorisation strategies. We have applied our strategy to the cosmological code called SWIFT, which solves the equations of hydrodynamics using SPH. We observe a speedup of 6.65x for the raw particle interactions and 2.32x for the overall neighbour find and interaction function using AVX2."
-    links:
-      - href: "IXPUG_Cambridge_2017.pdf"
-        name: Slides
-        
-  - meeting: Intel HPC Devcon
-    location: Salt Lake City, US
-    date: November 2016
-    title: "SWIFT: Using Task-Based Parallelism, Fully Asynchronous Communication and Vectorization to achieve maximal HPC performance"
-    author: Matthieu Schaller
-    abstract: "We present a new open-source cosmological code, called swift, designed to solve the equations of hydrodynamics using a particle-based approach (Smooth Particle Hydrodynamics) on hybrid shared / distributed-memory architectures. Swift was designed from the bottom up to provide excellent strong scaling on both commodity clusters (Tier-2 systems) and Top100-supercomputers (Tier-0 systems), without relying on architecture-specific features or specialised accelerator hardware. This performance is due to three main computational approaches: - Task-based parallelism for shared-memory parallelism, which provides fine-grained load balancing and thus strong scaling on large numbers of cores. - Graph-based and genetic algorithm-based domain decomposition, which uses the task graph to decompose the simulation domain such that the work, as opposed to just the data, as is the case with most partitioning schemes, is equally distributed across all nodes. - Fully dynamic and asynchronous communication, in which communication is modelled as just another task in the task-based scheme, sending data whenever it is ready and deferring on tasks that rely on data from other nodes until it arrives, - Explicit vectorization of the core kernel to exploit all the available FLOPS on architectures such as Xeon Phi. In order to use these approaches, the code had to be rewritten from scratch, and the algorithms therein adapted to the task-based paradigm. As a result, we can show upwards of 60% parallel efficiency for moderate-sized problems when increasing the number of cores 512-fold on x86 architecture making SWIFT more than an order of magnitude faster than current alternative software."
-    links:
-      - href: "HPC_DevCon_Talk_2016.pdf"
-        name: Slides
-
-      - href: "http://players.brightcove.net/734546229001/default_default/index.html?videoId=5214543392001"
-        name: Talk Movie
-
-  - meeting: IPCC-EMEA Fall Meeting
-    location: Toulouse, France
-    date: October 2016
-    title: "SWIFT: Scheduling tasks efficiently on 256 cores - The KNL challenge"
-    author: Matthieu Schaller
-    links:
-      - href: "IPCC_EMEA_2016_10.pdf"
-        name: Slides
-
-  - meeting: PASC Conference 2016
-    location: Lausanne, Switzerland
-    date: June 2016
-    title: "SWIFT: Strong scaling for particle-based simulations on more than 100'000 cores"
-    author: Matthieu Schaller
-    abstract: "We present a new open-source cosmological code, called SWIFT, designed to solve the equations of hydrodynamics using a particle-based approach (Smooth Particle Hydrodynamics) on hybrid shared/distributed-memory architectures. SWIFT was designed from the bottom up to provide excellent strong scaling on both commodity clusters (Tier-2 systems) and Top100-supercomputers (Tier-0 systems), without relying on architecture-specific features or specialised accelerator hardware. This performance is due to three main computational approaches: (1) Task-based parallelism for shared-memory parallelism, which provides fine-grained load balancing and thus strong scaling on large numbers of cores. (2) Graph-based domain decomposition, which uses the task graph to decompose the simulation domain such that the work, as opposed to just the data, as is the case with most partitioning schemes, is equally distributed across all nodes. (3) Fully dynamic and asynchronous communication, in which communication is modelled as just another task in the task-based scheme, sending data whenever it is ready and deferring on tasks that rely on data from other nodes until it arrives. In order to use these approaches, the code had to be re-written from scratch, and the algorithms therein adapted to the task-based paradigm. As a result, we can show upwards of 60% parallel efficiency for moderate-sized problems when increasing the number of cores 512-fold, on both x86-based and Power8-based architectures."
-    links:
-      - href: "PASC_2016.pdf"
-        name: Slides
-        
-      - href: "https://arxiv.org/abs/1606.02738"
-        name: Paper 
-
-  - meeting: EASC conference 2015
-    location: Edinburgh, UK
-    date: April 2015
-    title: " SWIFT: task-based hydrodynamics and gravity for cosmological simulations"
-    author: Tom Theuns
-    abstract: "Simulations of galaxy formation follow the gravitational and hydrodynamical interactions between gas, stars and dark matter through cosmic time. The huge dynamic range of such calculations severely limits strong scaling behaviour of the community codes in use, with load-imbalance, cache inefficiencies and poor vectorisation limiting performance. The new swift code exploits task-based parallelism designed for many-core compute nodes interacting via MPI using asynchronous communication to improve speed and scaling. A graph-based domain decomposition schedules interdependent tasks over available resources. Strong scaling tests on realistic particle distributions yield excellent parallel efficiency, and efficient cache usage provides a large speed-up compared to current codes even on a single core. SWIFT is designed to be easy to use by shielding the astronomer from computational details such as the construction of the tasks or MPI communication. The techniques and algorithms used in SWIFT may benefit other computational physics areas as well, for example that of compressible hydrodynamics."
-    links:
-      - href: "https://arxiv.org/abs/1508.00115"
-        name: Paper
-        
-  - meeting: Exascale Computing in Astrophysics
-    location: Ascona, Switzerland 
-    date: September 2013
-    title: "SWIFT: Task-based parallelism, hybrid shared/distributed-memory parallelism, and SPH simulations"
-    author: Pedro Gonnet 
-    links:
-      - href: "Ascona_2013.pdf"
-        name: Slides
-
-      - href: "https://www.youtube.com/watch?v=2Q5GIG9HVJY"
-        name: Talk Movie
diff --git a/generate_map.py b/generate_map.py
new file mode 100644
index 0000000000000000000000000000000000000000..30666774d83fa734a5ad2997d30aa2e33485374a
--- /dev/null
+++ b/generate_map.py
@@ -0,0 +1,73 @@
+import os
+from bokeh.models import ColumnDataSource, WheelZoomTool, HoverTool
+from bokeh.plotting import figure, save
+import numpy as np
+import pandas as pd
+import xyzservices.providers as xyz
+
+# Read in data
+df = pd.read_csv('data/swift_users.txt', sep=r'\s+')
+
+# Convert latitude & longitde to metcator coordinates
+def wgs84_to_web_mercator(lon, lat):
+    k = 6378137
+    x = lon * (k * np.pi/180.0)
+    y = np.log(np.tan((90 + lat) * np.pi/360.0)) * k
+    return x, y
+df["x"], df["y"] = wgs84_to_web_mercator(df["Longitude"], df["Latitude"])
+
+# Set map bounds
+min_lon, max_lon = -180, 180
+min_lat, max_lat = -56, 70
+min_x, min_y = wgs84_to_web_mercator(min_lon, min_lat)
+max_x, max_y = wgs84_to_web_mercator(max_lon, max_lat)
+
+# Create map
+p = figure(
+    x_range=(min_x, max_x),
+    y_range=(min_y, max_y),
+    x_axis_type="mercator", y_axis_type="mercator",
+    title=None,
+    sizing_mode="scale_width",
+    aspect_ratio=1.9,
+)
+tile_provider = xyz.CartoDB.Voyager
+p.add_tile(tile_provider)
+
+# Plot users
+for cat, color in [
+        ('Community', 'blue'),
+        ('Core', 'red'), 
+    ]:
+    source = ColumnDataSource(df[df['Category'] == cat])
+    p.scatter(x="x", y="y", size=15, fill_color=color, fill_alpha=0.8, source=source, line_color='black', line_width=2, legend_label=cat)
+hover = HoverTool(tooltips=[
+    ("Institute", "@Name"),
+#    ("Description", "@Description"),
+])
+p.add_tools(hover)
+
+# Activate wheel zoom
+for tool in p.tools:
+    if isinstance(tool, WheelZoomTool):
+        p.toolbar.active_scroll = tool
+        break
+
+# Apply bounds to the plot ranges
+p.x_range.bounds = (min_x, max_x)
+p.y_range.bounds = (min_y, max_y)
+
+# Zoom level limit
+p.x_range.min_interval = 10**5.5
+p.x_range.max_interval = max_x - min_x
+p.y_range.min_interval = 10**5.5
+p.y_range.max_interval = max_y - min_y
+
+# Legend
+p.legend.location = "top_left"
+p.legend.label_text_font_size = "20pt"
+
+# Save
+os.makedirs('user_map', exist_ok=True) 
+save(p, 'user_map/swift_users.html', title='SWIFT Users', resources='inline')
+
diff --git a/make_page.sh b/make_page.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7e103555283f38afffcb67eb26abb62e3e6a42f3
--- /dev/null
+++ b/make_page.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+set -e
+
+# Tested on winkel.strw.leidenuniv.nl
+module purge
+module load localhosts
+
+# Create venv if it doesn't exist
+[ ! -d "venv" ] && python -m venv venv
+source venv/bin/activate
+pip install --upgrade pip
+pip install -r requirements.txt
+
+# Create main webpage
+git pull
+[ -d "gallery" ] && rm -rf gallery
+cp -r /net/hypernova/data2/webpages_data/SWIFT/image_gallery gallery
+python query.py rLY4HeXMXttDOSedTGrYuRufATu2gDwgE84Hqy3B
+python generate_map.py
+python compiler.py
+rsync -auv compiled/* ../
+
+[ ! -d "swift" ] && git clone "git@gitlab.cosma.dur.ac.uk:swift/swiftsim.git" "swift"
+cd swift
+git checkout master
+git pull
+# Generate read the docs
+cd doc/RTD
+[ -d "build" ] && rm -rf build
+make html > docbuild.out 2> docbuild.err
+# Generate onboarding guide
+cd ../onboardingGuide
+[ -d "build" ] && rm -rf build
+make latexpdf > onbuild.out 2> onbuild.err
+# Copy both to webpage
+cd ../../..
+[ -d "../docs" ] && rm -rf ../docs
+cp -r swift/doc/RTD/build/html/ ../docs
+cp swift/doc/onboardingGuide/build/latex/onboarding.pdf ../onboarding.pdf
+ 
+# Generate read the docs for the zoom branch
+[ ! -d "swift_will" ] && git clone "git@gitlab.cosma.dur.ac.uk:swift/swiftsim.git" "swift_will"
+cd swift_will
+git checkout zoom_docs
+git pull
+cd doc/RTD
+[ -d "build" ] && rm -rf build
+make html > docbuild.out 2> docbuild.err
+cd ../../..
+[ -d "../docs_will" ] && rm -rf ../docs_will
+cp -r swift_will/doc/RTD/build/html/ ../docs_will
+
diff --git a/requirements.txt b/requirements.txt
index f4597ff8200882024fa9639f31ff8a56561793cd..cfbfa315b285319cf8fde46ac7a70f74c47e2a5d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,12 @@
+# Required for SWIFTweb
 pyyaml
 jinja2
 mistune
 python-dateutil
+myads
+bokeh
+
+# Required for swift docs
+sphinx_rtd_theme
+scipy
+matplotlib
diff --git a/stylesheets/contact.css b/stylesheets/contact.css
deleted file mode 100644
index f6c227adfcdd7b7aa9783e34e71491f2622d4229..0000000000000000000000000000000000000000
--- a/stylesheets/contact.css
+++ /dev/null
@@ -1,68 +0,0 @@
-form {
-  width: 100%;
-  
-  display: flex;
-
-  flex-wrap: wrap;
-
-  justify-content: space-between;
-  align-content: stretch;
-}
-
-input, textarea {
-  width: 100%;
-  padding: 1em 0.5em;
-  border-radius: 2px;
-  border: 1px solid #145289;
-}
-
-textarea {
-  min-height: 10em;
-  resize: none;
-  padding: 0.5em;
-}
-
-form h4 {
-  margin-bottom: 0.25em;
-}
-
-.send {
-  margin: 1em 0;
-}
-
-/* Page Layout */
-
-.content {
-  display: flex;
-
-  flex-wrap: wrap;
-  flex-direction: row;
-
-  justify-content: space-between;
-  align-content: stretch;
-  
-}
-
-.text {
-  width: 45%;
-  margin: 0;
-}
-
-.padder {
-  margin-top: 1em;
-  border-left: 1px solid black;
-}
-
-/* Media Queries */
-
-@media screen and (max-width: 768px) {
-  .text {
-    width: 100%;
-  }
-
-  .padder {
-    margin: 1em 0;
-    border-left: none;
-    border-bottom: 1px solid black;
-  }
-}
\ No newline at end of file
diff --git a/stylesheets/users.css b/stylesheets/users.css
new file mode 100644
index 0000000000000000000000000000000000000000..3f20a240aee80ae632cb67e79b65f7ec5bb5b08e
--- /dev/null
+++ b/stylesheets/users.css
@@ -0,0 +1,30 @@
+iframe {
+  width: 100%; 
+  height: auto; /* Allow height to adjust based on aspect-ratio */
+  aspect-ratio: 1.9;
+  border: none;
+  display: block;
+  margin-bottom: 3em;
+}
+
+.content {
+  display: flex;
+
+  flex-wrap: wrap;
+  flex-direction: row;
+
+  justify-content: space-between;
+  align-content: stretch;
+  
+}
+
+.text {
+  width: 100%;
+  margin: 0;
+}
+
+.padder {
+  margin-top: 1em;
+  border-left: 1px solid black;
+}
+
diff --git a/talks/Ascona_2013.pdf b/talks/Ascona_2013.pdf
deleted file mode 100644
index e7b92d57521fbe42d95becf8fe87a1af23c4b51a..0000000000000000000000000000000000000000
Binary files a/talks/Ascona_2013.pdf and /dev/null differ
diff --git a/talks/EWASS_2018.pdf b/talks/EWASS_2018.pdf
deleted file mode 100644
index 4625d9f0b23afc422f91df35a9e95094c27d7060..0000000000000000000000000000000000000000
Binary files a/talks/EWASS_2018.pdf and /dev/null differ
diff --git a/talks/HPC_DevCon_2017.pdf b/talks/HPC_DevCon_2017.pdf
deleted file mode 100644
index 0619b78af1fbc0c47a1536006f35323f560a5a05..0000000000000000000000000000000000000000
Binary files a/talks/HPC_DevCon_2017.pdf and /dev/null differ
diff --git a/talks/HPC_DevCon_Talk_2016.pdf b/talks/HPC_DevCon_Talk_2016.pdf
deleted file mode 100644
index 7785c2f6fcff17e3c69217d0e936e395ab8bdc01..0000000000000000000000000000000000000000
Binary files a/talks/HPC_DevCon_Talk_2016.pdf and /dev/null differ
diff --git a/talks/IPCC_EMEA_2016_10.pdf b/talks/IPCC_EMEA_2016_10.pdf
deleted file mode 100644
index a9906110565252509c740a73cb66f9659deac2be..0000000000000000000000000000000000000000
Binary files a/talks/IPCC_EMEA_2016_10.pdf and /dev/null differ
diff --git a/talks/ISC_Intel_Booth_Talk_2017.pdf b/talks/ISC_Intel_Booth_Talk_2017.pdf
deleted file mode 100644
index 89f9f980a294430ff53242ddc3cbe32f4166312b..0000000000000000000000000000000000000000
Binary files a/talks/ISC_Intel_Booth_Talk_2017.pdf and /dev/null differ
diff --git a/talks/IXPUG_Cambridge_2017.pdf b/talks/IXPUG_Cambridge_2017.pdf
deleted file mode 100644
index 727eff619005859375592f4622b1d3fc12c36f25..0000000000000000000000000000000000000000
Binary files a/talks/IXPUG_Cambridge_2017.pdf and /dev/null differ
diff --git a/talks/NAM_2017.pdf b/talks/NAM_2017.pdf
deleted file mode 100644
index 173fce94bad09bb905bec1c343439a883e90acc7..0000000000000000000000000000000000000000
Binary files a/talks/NAM_2017.pdf and /dev/null differ
diff --git a/talks/PASC_2016.pdf b/talks/PASC_2016.pdf
deleted file mode 100644
index 3eb75521b85330e532ad6dbe683af7e8d5956592..0000000000000000000000000000000000000000
Binary files a/talks/PASC_2016.pdf and /dev/null differ
diff --git a/talks/ParCo_2017_Bologna_Talk.pdf b/talks/ParCo_2017_Bologna_Talk.pdf
deleted file mode 100644
index 3f22bab23cd82db1282e4b1d6c2ee2faa8ecbb52..0000000000000000000000000000000000000000
Binary files a/talks/ParCo_2017_Bologna_Talk.pdf and /dev/null differ
diff --git a/talks/Ringberg_2018.pdf b/talks/Ringberg_2018.pdf
deleted file mode 100644
index ea704e353c727f32610e7267fd6d9d9d9239500f..0000000000000000000000000000000000000000
Binary files a/talks/Ringberg_2018.pdf and /dev/null differ
diff --git a/talks/SIAM_2018.pdf b/talks/SIAM_2018.pdf
deleted file mode 100644
index a5caae781b1a3b718326af88d85ca81b50cc5f56..0000000000000000000000000000000000000000
Binary files a/talks/SIAM_2018.pdf and /dev/null differ
diff --git a/talks/SPHERIC_2018.pdf b/talks/SPHERIC_2018.pdf
deleted file mode 100644
index 342c000469c91620a03fb8c2da8311c0c91d2522..0000000000000000000000000000000000000000
Binary files a/talks/SPHERIC_2018.pdf and /dev/null differ
diff --git a/talks/SuperComputingFrontiers_2018.pdf b/talks/SuperComputingFrontiers_2018.pdf
deleted file mode 100644
index dd99f29e5c6fde805ff1b655f37a37fc79a36ccb..0000000000000000000000000000000000000000
Binary files a/talks/SuperComputingFrontiers_2018.pdf and /dev/null differ
diff --git a/templates/gallery.html b/templates/gallery.html
index 8a350855fd08c6124b9d5676b6c9dadeaa2d50b9..3e435948c8698555610868eca01abf8889a1a83f 100644
--- a/templates/gallery.html
+++ b/templates/gallery.html
@@ -59,7 +59,7 @@
 
        <div class="text">
 	 <br/>
-	 Got some nice SWIFT-made images to share? <a href="contact.html">Contact us!</a>
+	 Got some nice SWIFT-made images to share? <a href="mailto:schaller@strw.leidenuniv.nl">Contact us!</a>
        </div>
        
      <!--    </div>        -->
diff --git a/templates/users.html b/templates/users.html
new file mode 100644
index 0000000000000000000000000000000000000000..c8477904ac2ddf536061b9face878fbf5f8e43f3
--- /dev/null
+++ b/templates/users.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+{% import "helpers.html" as helper %}
+
+{% block title %}User Map{% endblock %}
+{% block stylesheets %}<link href='users.css' rel='stylesheet' type='text/css'>{% endblock %}
+
+{% block content %}
+{{ helper.wide_header() }}
+<div class="container">
+    {{ helper.navbar(navbar, link) }}
+    <div class="content">
+
+
+        <div class="text">
+            <h2>SWIFT User Map</h2>
+            <p>The following is a map of research groups around the globe who make use of the SWIFT code. If you're a user and don't see your institution listed then please <a href="mailto:schaller@strw.leidenuniv.nl">contact us!</a></p>
+        </div>
+
+        <iframe src="swift_users.html"></iframe>
+
+    </div>
+</div>
+
+{% endblock %}
+