diff --git a/doc/binary_c2.lyx b/doc/binary_c2.lyx
index 48df5ed74d66cdad7d260626cf8fcd4a57115f52..c80156d7b440f117273316396c777dfef84af96c 100644
--- a/doc/binary_c2.lyx
+++ b/doc/binary_c2.lyx
@@ -1160,6 +1160,74 @@ noprefix "false"
 .
 \end_layout
 
+\begin_layout Subsection
+Ubuntu 20.10 quick start
+\end_layout
+
+\begin_layout Standard
+If you are running the latest 
+\begin_inset Flex OS
+status open
+
+\begin_layout Plain Layout
+Ubuntu
+\end_layout
+
+\end_inset
+
+, 20.10 at the time of writing, the 
+\begin_inset Flex File
+status open
+
+\begin_layout Plain Layout
+ubuntu_install.sh
+\end_layout
+
+\end_inset
+
+ script, in 
+\begin_inset Formula $\binaryc$
+\end_inset
+
+'s root directory, will do the installation for you.
+ Run the following to install even without a 
+\begin_inset Flex Software
+status open
+
+\begin_layout Plain Layout
+git
+\end_layout
+
+\end_inset
+
+ account
+\end_layout
+
+\begin_layout Standard
+\begin_inset listings
+inline false
+status open
+
+\begin_layout Plain Layout
+
+wget http://personal.ph.surrey.ac.uk/~ri0005/ubuntu_install.sh
+\end_layout
+
+\begin_layout Plain Layout
+
+chmod +x ubuntu_install.sh
+\end_layout
+
+\begin_layout Plain Layout
+
+./ubuntu_install.sh
+\end_layout
+
+\end_inset
+
+You will need root access to update and install system packages.
+\end_layout
+
 \begin_layout Subsection
 Download and build 
 \begin_inset Formula $\binaryc$
@@ -1578,24 +1646,6 @@ status open
 
 \begin_layout Plain Layout
 
-export PREFIX=$HOME
-\end_layout
-
-\begin_layout Plain Layout
-
-export CFLAGS=
-\begin_inset Quotes erd
-\end_inset
-
--O3 -mtune=generic
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-
 mkdir $HOME/lib $HOME/git
 \end_layout
 
@@ -1611,22 +1661,17 @@ git clone gitlab@gitlab.eps.surrey.ac.uk:ri0005/librinterpolate.git
 
 \begin_layout Plain Layout
 
-cd $HOME/git/librinterpolate/src
+cd $HOME/git/librinterpolate
 \end_layout
 
 \begin_layout Plain Layout
 
-make 
+meson --prefix=$HOME --buildtype=release builddir
 \end_layout
 
 \begin_layout Plain Layout
 
-make install
-\end_layout
-
-\begin_layout Plain Layout
-
-unset CFLAGS
+ninja -C builddir install
 \end_layout
 
 \end_inset
@@ -1710,24 +1755,6 @@ status open
 
 \begin_layout Plain Layout
 
-export PREFIX=$HOME
-\end_layout
-
-\begin_layout Plain Layout
-
-export CFLAGS=
-\begin_inset Quotes erd
-\end_inset
-
--O3 -mtune=generic
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-
 mkdir $HOME/lib $HOME/git
 \end_layout
 
@@ -1743,22 +1770,17 @@ git clone gitlab@gitlab.eps.surrey.ac.uk:ri0005/libmemoize.git
 
 \begin_layout Plain Layout
 
-cd $HOME/git/libmemoize/src
-\end_layout
-
-\begin_layout Plain Layout
-
-make 
+cd $HOME/git/libmemoize
 \end_layout
 
 \begin_layout Plain Layout
 
-make install
+meson --prefix=$HOME --buildtype=release builddir
 \end_layout
 
 \begin_layout Plain Layout
 
-unset CFLAGS
+ninja -C builddir install
 \end_layout
 
 \end_inset
@@ -1804,20 +1826,7 @@ status open
 
 \begin_layout Plain Layout
 
-export CFLAGS=
-\begin_inset Quotes erd
-\end_inset
-
--O3 -mtune=generic
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-
-mkdir $HOME/git
+mkdir $HOME/lib $HOME/git
 \end_layout
 
 \begin_layout Plain Layout
@@ -1837,17 +1846,12 @@ cd $HOME/git/librchash
 
 \begin_layout Plain Layout
 
-meson builddir --prefix=$HOME --buildtype release
+meson builddir --prefix=$HOME --buildtype=release
 \end_layout
 
 \begin_layout Plain Layout
 
-cd builddir
-\end_layout
-
-\begin_layout Plain Layout
-
-ninja install
+ninja -C builddir install
 \end_layout
 
 \end_inset
@@ -1983,17 +1987,12 @@ cd $BINARY_C
 
 \begin_layout Plain Layout
 
-meson builddir --buildtype release
-\end_layout
-
-\begin_layout Plain Layout
-
-cd builddir
+meson builddir --buildtype=release 
 \end_layout
 
 \begin_layout Plain Layout
 
-ninja binary_c_install 
+ninja -C builddir binary_c_install 
 \end_layout
 
 \begin_layout Plain Layout
diff --git a/src/perl/modules_targz/Binning-0.03.tar.gz b/src/perl/modules_targz/Binning-0.03.tar.gz
index cfd7ee62d1a0e6c4a196a060d8931544306eeb3b..f1651bce2b184e47aa933a329a424c6a99d35a09 100644
Binary files a/src/perl/modules_targz/Binning-0.03.tar.gz and b/src/perl/modules_targz/Binning-0.03.tar.gz differ
diff --git a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz
index 18c5a249d395f831f514a6f33020a8edebce51c1..b5f0b0af9efcfe48fd04bfb28aa9c434fba4dc4f 100644
Binary files a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz and b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz differ
diff --git a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz
index abb5033161439ec09764e4a9f8d1da98539f6cf7..2f4b339b77e6462a9eaa14129f510be98268b740 100644
Binary files a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz and b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz differ
diff --git a/src/perl/modules_targz/Histogram-0.01.tar.gz b/src/perl/modules_targz/Histogram-0.01.tar.gz
index db37d1ee2fbc1533aab8a68ffaa956dfd4af6955..316bce9d5ac2ab00cc663fdb103faf1efe2acd8b 100644
Binary files a/src/perl/modules_targz/Histogram-0.01.tar.gz and b/src/perl/modules_targz/Histogram-0.01.tar.gz differ
diff --git a/src/perl/modules_targz/IMF-0.05.tar.gz b/src/perl/modules_targz/IMF-0.05.tar.gz
index 39504b73174598040d1d5354e760f7928b2e7925..0c2d72ad48f75fbc6a60102421b119c4bcdb5eee 100644
Binary files a/src/perl/modules_targz/IMF-0.05.tar.gz and b/src/perl/modules_targz/IMF-0.05.tar.gz differ
diff --git a/src/perl/modules_targz/Maths_Double-0.01.tar.gz b/src/perl/modules_targz/Maths_Double-0.01.tar.gz
index 097724ccb63a7d5091e23f4c4357bc82958ee4db..95851d56a29a43d614c3e35b9911da8227e8fe9c 100644
Binary files a/src/perl/modules_targz/Maths_Double-0.01.tar.gz and b/src/perl/modules_targz/Maths_Double-0.01.tar.gz differ
diff --git a/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz b/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz
index 87d81932fc5cc3f1ceb9e1eb8ddee41ec9d07ab5..314dedf2edc1b1b74550e89de899e30e434a475b 100644
Binary files a/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz and b/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz differ
diff --git a/src/perl/modules_targz/binary_stars-0.05.tar.gz b/src/perl/modules_targz/binary_stars-0.05.tar.gz
index 47bc443bba3a499625b8cdad80a31ff9e5e8cda8..cdc1cb96a526001be784ba3a235f43368a2e81f3 100644
Binary files a/src/perl/modules_targz/binary_stars-0.05.tar.gz and b/src/perl/modules_targz/binary_stars-0.05.tar.gz differ
diff --git a/src/perl/modules_targz/cosmology-0.01.tar.gz b/src/perl/modules_targz/cosmology-0.01.tar.gz
index 0702e6d5b18ad2e512d3422c0ad9a58199fd3c42..b9b69634e9802bc8ac7fe11f564cf0840aab3fea 100644
Binary files a/src/perl/modules_targz/cosmology-0.01.tar.gz and b/src/perl/modules_targz/cosmology-0.01.tar.gz differ
diff --git a/src/perl/modules_targz/distribution_functions-0.06.tar.gz b/src/perl/modules_targz/distribution_functions-0.06.tar.gz
index c40fb18944fcbf39bdc32f8232311d58ffef49ba..bc4746f381822d4367836deefe60396553db63db 100644
Binary files a/src/perl/modules_targz/distribution_functions-0.06.tar.gz and b/src/perl/modules_targz/distribution_functions-0.06.tar.gz differ
diff --git a/src/perl/modules_targz/install_all.pl b/src/perl/modules_targz/install_all.pl
index 251f4cde06e281133954065776f770b837ca57e4..a25ab4fe9440fb209a16f8615351d2feceac9d4d 100755
--- a/src/perl/modules_targz/install_all.pl
+++ b/src/perl/modules_targz/install_all.pl
@@ -6,72 +6,35 @@ use strict;
 #
 # Assumes you have cpanminus (cpanm) installed.
 #
-# You can override the cpanm comment with the CPANM environment
-# variable.
-#
-my $cpanm = $ENV{CPANM} // 'cpanm';
-
-print "Install all required perl modules using cpanm (to default location)\n";
-
-# make list of modules, in order
-my @mods;
-
-# hard wired fix for an old mistake
-@mods = (`ls Hash-RobMerge*`);
-chomp @mods;
-
-# dependencies file
-if(-f 'deps')
-{
-    open(my $deps,'<','deps') || 
-        die("cannot open deps file even though it exists\n");
-    while(my $l = <$deps>)
-    {
-        chomp $l;
-        if($l=~m!.*\/(\S+)\.pm$/!)
-        {
-            my $short = $1; # short module name
-            my $r = `ls $short*.tar.gz 2>\&1`;
-            if($r =~ /^$short/)
-            {
-                chomp $r;
-                push(@mods,$r);
-            }
-        }
-        elsif($l=~/tar.gz$/)
-        {
-            push(@mods,$l) if(-f $l);
-        }
-    }
-    close $deps;
-}
-
-push (@mods, `ls *.tar.gz`);
-chomp @mods;
-@mods = uniq(@mods);
-
-my $fail;
-foreach my $tgz (@mods)
+$|=1;
+
+my $logfile = './cpanm.log';
+foreach my $file
+(qw/
+rob_misc-0.17.tar.gz
+binary_stars-0.05.tar.gz
+cosmology-0.01.tar.gz
+Binning-0.03.tar.gz
+rinterpolate-1.5.tar.gz
+Data-Serializer-RobJSON-0.05.tar.gz
+Hash-RobMerge-0.14.tar.gz
+Histogram-0.01.tar.gz
+IMF-0.05.tar.gz
+Maths_Double-0.01.tar.gz
+RobInterpolation-0.04.tar.gz
+robqueue-0.05.tar.gz
+distribution_functions-0.06.tar.gz
+spacing_functions-0.02.tar.gz
+binary_grid-v2.1.7.tar.gz/)
 {
-    my $d=($tgz=~/(.*)\.tar\.gz/)[0];
-    
-    print "Install $tgz using cpanm\n";
-    my $out = `$cpanm --installdeps ./$tgz 2>\&1`.`$cpanm --force --notest ./$tgz 2>\&1`;
-
-    if($out =~ /fail/)
+    print "Installing $file ... ";
+    my $cmd = "cpanm --notest -v $file 2>\&1 > $logfile";
+    `$cmd`;
+    my $r = $?;
+    if($r != 0)
     {
-        $fail .= "Failure detected when installing $tgz\n";
+        print "\n$cmd returned $r : this is an error, please check $logfile\n";
+        exit;
     }
-}
-
-
-if($fail)
-{
-    print "\n\n",$fail,"\n\n  This may be a dependency problem: try running this script a few times, this may cure the problem.\n\n";
-} 
-
-sub uniq
-{
-    my %seen;
-    return grep { !$seen{$_}++ } @_;
+    print "done\n";
 }
diff --git a/src/perl/modules_targz/rinterpolate-1.5.tar.gz b/src/perl/modules_targz/rinterpolate-1.5.tar.gz
index 50a1179c82c195de701622ef72ee4bd17636966c..cf390ac5c303c6aea018761cd7e13a6f2e62c13e 100644
Binary files a/src/perl/modules_targz/rinterpolate-1.5.tar.gz and b/src/perl/modules_targz/rinterpolate-1.5.tar.gz differ
diff --git a/src/perl/modules_targz/rob_misc-0.17.tar.gz b/src/perl/modules_targz/rob_misc-0.17.tar.gz
index 05caf8bff21c98e0d6d66bcf4bab00b33662f280..7fa8831b5ac2123662d9ef446c9f57d8e47d5bf4 100644
Binary files a/src/perl/modules_targz/rob_misc-0.17.tar.gz and b/src/perl/modules_targz/rob_misc-0.17.tar.gz differ
diff --git a/src/perl/modules_targz/robqueue-0.05.tar.gz b/src/perl/modules_targz/robqueue-0.05.tar.gz
index c38c0fd1df536ae1a3d1a6ecae7c0cab6a9f1cb0..0a68162d73e1bf5a0ad5ab31c74b9fcf76526cdc 100644
Binary files a/src/perl/modules_targz/robqueue-0.05.tar.gz and b/src/perl/modules_targz/robqueue-0.05.tar.gz differ
diff --git a/src/perl/modules_targz/spacing_functions-0.02.tar.gz b/src/perl/modules_targz/spacing_functions-0.02.tar.gz
index cb1a0d941865328212352830f44284c64776c61c..1727f72db8c69137788f20c205a169732b5b9a1b 100644
Binary files a/src/perl/modules_targz/spacing_functions-0.02.tar.gz and b/src/perl/modules_targz/spacing_functions-0.02.tar.gz differ
diff --git a/ubuntu_install.sh b/ubuntu_install.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d6c6cf8bca6d22f17d607010fa24ab194c96b8c5
--- /dev/null
+++ b/ubuntu_install.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+############################################################
+#
+# script to install binary_c
+#
+# tested on Ubuntu 20.10
+#
+# Note: this will ask you to choose python3.9
+#       as your default python. You do NOT have to
+#       do this, but some software is only tested
+#       on python3.9.
+#
+# We default to using gcc-10 for the compilation.
+#
+############################################################
+
+
+
+# update and install a KDE desktop :)
+#sudo apt-get install synaptic kubuntu-desktop
+#balooctl disable
+
+# update system
+sudo apt-get update
+sudo apt-get upgrade
+
+# install required packages
+sudo apt-get install bash zip gcc-10 libgcc-10-dev gdb valgrind gawk python3.9 pipenv kcachegrind meson ninja-build emacs perl libgsl-dev global libbsd-dev binutils-dev libiberty-dev libjemalloc-dev zlib1g-dev unzip wget curl
+sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
+sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
+sudo update-alternatives --config python # >>> choose python3.9 <<<
+pip install --upgrade meson
+pip install --upgrade ninja
+
+# set up environment
+export CC=gcc-10
+export BINARY_C=$HOME/progs/stars/binary_c
+
+if [ ! grep -q 'binary_c paths do not alter' ~/.bashrc ]
+then
+   # set up bash paths : do this only once!
+   echo '# binary_c paths do not alter' >> ~/.bashrc
+   echo 'export LD_LIBRARY_PATH=$HOME/lib:$BINARY_C:$BINARY_C/src' >> ~/.bashrc # do this only once!
+   echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc # do this only once!
+fi
+export LD_LIBRARY_PATH=$HOME/lib:$BINARY_C:$BINARY_C/src
+export PATH=$HOME/bin:$PATH
+
+# Install librinterpolate, libmemoize, librchash
+cd $HOME
+mkdir git
+cd $HOME/git
+wget https://gitlab.eps.surrey.ac.uk/ri0005/librinterpolate/-/archive/master/librinterpolate-master.zip -O librinterpolate-master.zip
+unzip -o librinterpolate-master.zip
+cd librinterpolate-master/
+meson --prefix=$HOME --buildtype=release builddir
+ninja -C builddir install
+cd ..
+
+wget https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize/-/archive/master/libmemoize-master.zip -O libmemoize-master.zip
+unzip -o libmemoize-master.zip
+cd libmemoize-master/
+meson --prefix=$HOME --buildtype=release builddir
+ninja -C builddir install
+cd ..
+
+wget https://gitlab.eps.surrey.ac.uk/ri0005/librchash/-/archive/master/librchash-master.zip -O librchash-master.zip
+unzip -o librchash-master.zip
+cd librchash-master/
+meson --prefix=$HOME --buildtype=release builddir
+ninja -C builddir install
+cd ..
+
+# download and install binary_c
+mkdir -p $BINARY_C
+cd $BINARY_C/..
+wget http://personal.ph.surrey.ac.uk/~ri0005/binary_c-master.zip -O binary_c-master.zip
+unzip -o binary_c-master.zip
+rmdir binary_c
+mv binary_c-master binary_c
+cd binary_c
+meson -Dbuildtype=release -Dvalgrind=true builddir
+ninja -C builddir binary_c_install
+./tbse
+
+
+# install perlbrew and binary_grid
+cd $HOME
+\curl -L https://install.perlbrew.pl | bash
+
+if [ ! grep -q 'perlbrew paths do not alter' ~/.bashrc ]
+then
+   echo "# perlbrew paths do not alter" >> ~/.bashrc
+   echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc # only do this once!
+fi
+source ~/perl5/perlbrew/etc/bashrc
+
+
+export NTHREADS=`cat /proc/cpuinfo |grep cpu\ famil|wc -l`
+export LATEST_PERL=`perlbrew available | grep "^[[:space:]]\+perl" | head -1`
+perlbrew -v install $LATEST_PERL --thread --multi --64bitall --notest -Dusethreads -Duselargefiles -Dcccdlflags=-fPIC -Dpager=/usr/bin/sensible-pager -Doptimize="-O3 -mtune=generic" -Duseshrplib -j $NTHREADS
+perlbrew switch $LATEST_PERL
+perlbrew install-cpanm
+cd $BINARY_C/src/perl/modules_targz
+./install_all.pl
+
+# run a test population
+cd $BINARY_C
+LD_PRELOAD=./src/libbinary_c.so ./src/perl/scripts2/template.pl