diff --git a/bin/fsl_sub b/bin/fsl_sub
deleted file mode 100755
index e99349488d4ed8c1324a80ebaeb382207ffcab25..0000000000000000000000000000000000000000
--- a/bin/fsl_sub
+++ /dev/null
@@ -1,483 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2007-2017 University of Oxford
-# Authors: Dave Flitney, Stephen Smith, Matthew Webster and Duncan Mortimer
-
-# SHCOPYRIGHT
-export LC_ALL=C
-
-###########################################################################
-# Edit this file in order to setup FSL to use your local compute
-# cluster.
-###########################################################################
-set +o errexit
-
-###########################################################################
-# The following section determines what to do when fsl_sub is called
-# by an FSL program. If SGE_ROOT is set it will attempt to pass the
-# commands onto the cluster, otherwise it will run the commands
-# itself. There are two values for the METHOD variable, "SGE" and
-# "NONE". Note that a user can unset SGE_ROOT if they don't want the
-# cluster to be used.
-###########################################################################
-METHOD=SGE
-unset module
-if [[ "x$SGE_ROOT" = "x" ]] ; then
-  METHOD=NONE
-else
-  QCONF=$(which qconf)
-  if [[ "x$QCONF" = "x" ]]; then
-    METHOD=NONE
-    echo "Warning: SGE_ROOT environment variable is set but Grid Engine software not found, will run locally" >&2
-  fi
-fi
-
-# stop submitted scripts from submitting jobs themselves
-if [[ "X$FSLSUBALREADYRUN" = "Xtrue" ]] ; then
-  METHOD=NONE
-  echo "Warning: job on queue attempted to submit parallel jobs - running jobs serially instead" >&2
-fi
-
-if [[ "X$METHOD" = "XNONE" ]]; then
-  QCONF=echo
-fi
-FSLSUBALREADYRUN=true
-export FSLSUBALREADYRUN
-
-###########################################################################
-# The following auto-decides what cluster queue to use. The calling
-# FSL program will probably use the -T option when calling fsl_sub,
-# which tells fsl_sub how long (in minutes) the process is expected to
-# take (in the case of the -t option, how long each line in the
-# supplied file is expected to take). You need to setup the following
-# list to map ranges of timings into your cluster queues - it doesn't
-# matter how many you setup, that's up to you.
-###########################################################################
-
-map_qname ()
-{
-  if [[ "$1" -le 20 ]] ; then
-    queue=veryshort.q
-  elif [[ "$1" -le 120 ]] ; then
-    queue=short.q
-  elif [[ "$1" -le 1440 ]] ; then
-    queue=long.q
-  else
-    queue=verylong.q
-  fi
-  queueCmd=" -q $queue "
-
-  #echo "Estimated time was $1 mins: queue name is $queue"
-}
-
-###########################################################################
-# Don't change the following (but keep scrolling down!)
-###########################################################################
-
-if [[ ! -z "${POSIXLY_CORRECT}" ]]; then
-  OLD_POSIXLY_CORRECT=${POSIXLY_CORRECT}
-fi
-
-POSIXLY_CORRECT=1
-export POSIXLY_CORRECT
-command=$(basename "$0")
-
-usage ()
-{
-  cat <<EOF
-
-$command V1.1 - wrapper for job control system such as SGE
-
-Usage: $command [options] <command>
-
-$command gzip *.img *.hdr
-$command -q short.q gzip *.img *.hdr
-$command -a darwin regscript rawdata outputdir ...
-
-  -T <minutes>          Estimated job length in minutes, used to auto-set queue name
-  -q <queuename>        Possible values for <queuename> are "verylong.q", "long.q"
-                        and "short.q". See below for details
-                        Default is "long.q".
-  -a <arch-name>        Architecture [e.g., darwin or lx24-amd64]
-  -p <job-priority>     Lower priority [0:-1024] default = 0
-  -M <email-address>    Who to email, default = $(whoami)@$(hostname -f | cut -d . -f 2-)
-  -j <jid>              Place a hold on this task until job jid has completed
-  -t <filename>         Specify a task file of commands to execute in parallel
-  -N <jobname>          Specify jobname as it will appear on queue
-  -R <RAM>              Max total RAM to use for job (integer in MB)
-  -l <logdirname>       Where to output logfiles
-  -m <mailoptions>      Change the SGE mail options, see qsub for details
-  -z <output>           If <output> image or file already exists, do nothing and exit
-  -F                    Use flags embedded in scripts to set SGE queuing options
-  -s <pename>,<threads> Submit a multi-threaded task - requires a PE (<pename>) to be
-                        configured for the requested queues.
-                        <threads> specifies the number of threads to run
-  -v                    Verbose mode.
-
-Queues:
-
-There are several batch queues configured on the cluster, each with defined CPU
-time limits. All queues, except bigmem.q, have a 8GB memory limit.
-
-veryshort.q:This queue is for jobs which last under 30mins.
-short.q:    This queue is for jobs which last up to 4h.
-long.q:     This queue is for jobs which last less than 24h. Jobs run with a
-            nice value of 10.
-verylong.q: This queue is for jobs which will take longer than 24h CPU time.
-            There is one slot per node, and jobs on this queue have a nice value
-            of 15.
-bigmem.q:   This queue is like the verylong.q but has no memory limits.
-
-EOF
-
-  exit 1
-}
-
-nargs=$#
-if [[ "$nargs" -eq 0 ]] ; then
-  usage
-fi
-
-#if the newer whitespace-safe getopt format is available, use it
-if [[ $(getopt -T >/dev/null 2>&1; echo $?) == 4 ]]; then
-  eval set -- $(getopt -s bash T:q:a:p:M:j:t:z:N:R:Fvm:l:s: "$@")
-  result=$?
-else
-  set -- $(getopt T:q:a:p:M:j:t:z:N:R:Fvm:l:s: "$@")
-  result=$?
-fi
-if [[ "$result" != 0 ]] ; then
-  echo "What? Your arguments make no sense!"
-fi
-
-if [[ "$nargs" -eq 0 ]] || [[ $result != 0 ]] ; then
-  usage
-fi
-
-if [[ -z "${OLD_POSIXLY_CORRECT}" ]]; then
-  unset POSIXLY_CORRECT
-else
-  POSIXLY_CORRECT=${OLD_POSIXLY_CORRECT}
-  export POSIXLY_CORRECT
-fi
-
-###########################################################################
-# If you have a Parallel Environment configured for OpenMP tasks then
-# the variable omp_pe should be set to the name you have defined for that
-# PE. The script will work out which queues have that PE setup on them.
-# Note, we support openmp tasks even when Grid Engine is not in use.
-###########################################################################
-
-omp_pe='openmp'
-
-
-###########################################################################
-# If you wish to disable processor affinities under Grid Engine then
-# comment the following line.
-# This instructs Grid Engine to bind the task to the number of job slots
-# allocated to the job (or PE)
-###########################################################################
-proc_affinities="-binding linear:slots"
-
-
-###########################################################################
-# The following sets up the default queue name, which you may want to
-# change. It also sets up the basic emailing control.
-###########################################################################
-
-queue=long.q
-queueCmd=" -q long.q "
-mailto=$(whoami)@$(hostname -f | cut -d . -f 2-)
-MailOpts="a"
-
-
-###########################################################################
-# In the following, you might want to change the behaviour of some
-# flags so that they prepare the right arguments for the actual
-# cluster queue submission program, in our case "qsub".
-#
-# -a sets is the cluster submission flag for controlling the required
-# hardware architecture (normally not set by the calling program)
-#
-# -p set the priority of the job - ignore this if your cluster
-# environment doesn't have priority control in this way.
-#
-# -j tells the cluster not to start this job until cluster job ID $jid
-# has completed. You will need this feature.
-#
-# -t will pass on to the cluster software the name of a text file
-# containing a set of commands to run in parallel; one command per
-# line.
-#
-# -N option determines what the command will be called when you list
-# running processes.
-#
-# -l tells the cluster what to call the standard output and standard
-# -error logfiles for the submitted program.
-###########################################################################
-
-if [[ -z "$FSLSUBVERBOSE" ]] ; then
-  verbose=0
-else
-  verbose=$FSLSUBVERBOSE;
-  echo "METHOD=$METHOD : args=$*" >&2
-fi
-
-scriptmode=0
-
-while [[ "$1" != -- ]] ; do
-  case "$1" in
-    -z)
-      if [[ -e "$2" || $("${FSLDIR}/bin/imtest" "$2") = 1 ]] ; then
-        exit 0
-      fi
-      shift;;
-    -T)
-      map_qname "$2"
-      shift;;
-    -q)
-      queue="$2"
-      queueCmd=" -q $queue "
-      "$QCONF" -sq "$queue" >/dev/null 2>&1
-      if [[ $? -eq 1 ]]; then
-        echo "Invalid queue specified!"
-        exit 127
-      fi
-      shift;;
-    -a)
-      acceptable_arch=no
-      available_archs=$(qhost | tail -n +4 | awk '{print $2}' | sort | uniq)
-      for a in $available_archs; do
-        if [[ "$2" = "$a" ]] ; then
-          acceptable_arch="yes"
-        fi
-      done
-      if [[ "$acceptable_arch" = "yes" ]]; then
-        sge_arch="-l arch=$2"
-      else
-        echo "Sorry arch of $2 is not supported on this SGE configuration!"
-        echo "Should be one of: $available_archs"
-        exit 127
-      fi
-      shift;;
-    -p)
-      # Not implmented
-      shift;;
-    -M)
-      mailto=$2
-      shift;;
-    -j)
-      jid=$2
-      sge_hold="-hold_jid $jid"
-      shift;;
-    -t)
-      taskfile=$2
-      if [[ -f "$taskfile" ]] ; then
-        tasks=$(wc -l "$taskfile" | awk '{print $1}')
-        if [[ "$tasks" -ne 0 ]]; then
-        	sge_tasks="-t 1-$tasks"
-        else
-          echo "Task file ${taskfile} is empty"
-          echo "Should be a text file listing all the commands to run!"
-          exit -1
-        fi
-      else
-        echo "Task file (${taskfile}) does not exist"
-        exit -1
-      fi
-      shift;;
-    -N)
-      JobName=$2;
-      shift;;
-    -R)
-      RAM="-l mem_free=${2}M"
-      shift;;
-    -m)
-      MailOpts=$2;
-      shift;;
-    -l)
-      LogOpts="-o $2 -e $2";
-      LogDir="${2}/";
-      if [[ ! -e "${2}" ]]; then
-        mkdir -p "$2"
-      else
-        echo "${2}" | grep '/dev/null' >/dev/null 2>&1
-        if [[ $? -eq 1 ]] && [[ -f "${2}" ]]; then
-            echo "Log destination is a file (should be a folder)"
-            exit -1
-        fi
-      fi
-      shift;;
-    -F)
-      scriptmode=1;
-      ;;
-    -v)
-      verbose=1
-      ;;
-    -s)
-      pe_string=$2;
-      peName=$(echo "$pe_string" | cut -d',' -f 1)
-      peThreads=$(echo "$pe_string" | cut -d',' -f 2)
-      shift;;
-  esac
-  shift  # next flag
-done
-shift
-
-###########################################################################
-# Don't change the following (but keep scrolling down!)
-###########################################################################
-commandline=("$@")
-command="${commandline[0]}"
-
-if [[ -z "$taskfile" ]] && [[ -z "$command" ]]; then
-  echo "Either supply a command to run or a parallel task file"
-  exit -1
-fi
-
-if [[ -z "$taskfile" ]] && [[ ! -x "$command" ]]; then
-  which "$command" >/dev/null 2>&1
-  if [[ $? -ne 0 ]]; then
-    echo "The command you have requested cannot be found or is not executable"
-    exit -1
-  fi
-fi
-
-if [[ "x$JobName" = x ]] ; then
-  if [[ "x$taskfile" != x ]] ; then
-    JobName=$(basename "$taskfile")
-  else
-    JobName=$(basename "$command")
-  fi
-fi
-
-if [[ -n "$tasks" ]] && [[ -n "${commandline[*]}" ]] ; then
-  echo "Spurious input after parsing command line: \"${commandline[*]}\"!"
-  echo "You appear to have specified both a task file and a command to run"
-  exit -1
-fi
-
-if [[ -n "$peName" ]]; then
-  # If the PE name is 'openmp' then limit the number of threads to those specified
-  if [[ "X$peName" = "X$omp_pe" ]]; then
-    OMP_NUM_THREADS=$peThreads
-    export OMP_NUM_THREADS
-  fi
-fi
-
-case "$METHOD" in
-
-###########################################################################
-# The following is the main call to the cluster, using the "qsub" SGE
-# program. If $tasks has not been set then qsub is running a single
-# command, otherwise qsub is processing a text file of parallel
-# commands.
-###########################################################################
-
-  SGE)
-       ###########################################################################
-       # Test Parallel environment options
-       ###########################################################################
-    if [[ -n "$peName" ]]; then
-      # Is this a configured PE?
-
-      "$QCONF" -sp "$peName" >/dev/null 2>&1
-
-      if [[ $? -eq 1 ]]; then
-        echo "${commandline[*]}"
-        echo "$peName is not a valid PE"
-        exit -1
-      fi
-
-      # Get a list of queues configured for this PE and confirm that the queue
-      # we have submitted to has that PE set up.
-      qstat -g c -pe "$peName" >/dev/null 2>&1
-      if [[ $? -eq 1 ]]; then
-        echo "No parallel environments configured!"
-        exit -1
-      fi
-
-      qstat -g c -pe "$peName" | sed '1,2d' | awk '{ print $1 }' | grep "^$queue" >/dev/null 2>&1
-
-      if [[ $? -eq 1 ]]; then
-        echo "${commandline[*]}"
-        echo "PE $peName is not configured on $queue"
-        exit -1
-      fi
-
-      # The -w e option will result in the job failing if there are insufficient slots
-      # on any of the cluster nodes
-      pe_options="-pe $peName $peThreads -w e"
-    fi
-
-    if [[ -z "$tasks" ]] ; then
-        if [[ "$scriptmode" -ne 1 ]] ; then
-          sge_command=(qsub -V -cwd -shell n -b y -r y $queueCmd $proc_affinities $pe_options -M $mailto -N "$JobName" -m $MailOpts $LogOpts $sge_arch $RAM $sge_hold)
-        else
-          sge_command=(qsub $proc_affinities $LogOpts $sge_arch $sge_hold)
-        fi
-        if [[ "$verbose" -eq 1 ]] ; then
-          echo "sge_command: ${sge_command[*]}" >&2
-          echo "executing: ${commandline[*]}" >&2
-        fi
-        exec "${sge_command[@]}" "${commandline[@]}" | awk '{print $3}'
-    else
-        sge_command=(qsub -V -cwd $queueCmd $proc_affinities $pe_options -M $mailto -N "$JobName" -m $MailOpts $LogOpts $sge_arch $RAM $sge_hold $sge_tasks)
-        if [[ "$verbose" -eq 1 ]] ; then
-          echo "sge_command: ${sge_command[*]}" >&2
-          echo "control file: $taskfile" >&2
-        fi
-        exec "${sge_command[@]}" <<EOF | awk '{print $3}' | awk -F. '{print $1}'
-#!/bin/sh
-
-#$ -S /bin/sh
-
-command=\`sed -n -e "\${SGE_TASK_ID}p" $taskfile\`
-
-exec /bin/sh -c "\$command"
-EOF
-    fi
-    ;;
-
-###########################################################################
-# Don't change the following - this runs the commands directly if a
-# cluster is not being used.
-###########################################################################
-
-  NONE)
-    if [[ "x$tasks" = "x" ]] ; then
-      if [[ "$verbose" -eq 1 ]] ; then
-        echo executing: "${commandline[*]}" >&2
-      fi
-
-      "${commandline[@]}" > "${LogDir}${JobName}.o$$" 2> "${LogDir}${JobName}.e$$"
-      ERR=$?
-      if [[ "$ERR" -ne 0 ]] ; then
-        cat "${LogDir}${JobName}.e$$" >&2
-        exit $ERR
-      fi
-    else
-      if [[ "$verbose" -eq 1 ]] ; then
-        echo "Running commands in: $taskfile" >&2
-      fi
-
-      n=1
-      while [[ "$n" -le "$tasks" ]] ; do
-        line=$(sed -n -e ''${n}'p' "$taskfile")
-        if [[ "$verbose" -eq 1 ]] ; then
-            echo "executing: $line" >&2
-        fi
-        /bin/sh <<EOF2 > "${LogDir}${JobName}.o$$.$n" 2> "${LogDir}${JobName}.e$$.$n"
-$line
-EOF2
-        n=$((n+1))
-      done
-    fi
-    echo $$
-    ;;
-
-esac
-
-###########################################################################
-# Done.
-###########################################################################