diff --git a/binarycpython/utils/functions.py b/binarycpython/utils/functions.py
index 524ae85e4a70827d9883695837a9676bf88d9407..3da4c50baeae318ac9469b0ab5fbca2d386e73ab 100644
--- a/binarycpython/utils/functions.py
+++ b/binarycpython/utils/functions.py
@@ -1037,8 +1037,11 @@ def make_build_text() -> str:
     Returns:
         string containing information about the build and the git branch
     """
+    from binarycpython.utils.grid import Population
 
-    version_info = return_binary_c_version_info(parsed=True)
+    version_pop = Population()
+    version_info = version_pop.return_binary_c_version_info(parsed=True)
+    # version_info = return_binary_c_version_info(parsed=True)
 
     git_revision = version_info["miscellaneous"]["git_revision"]
     git_branch = version_info["miscellaneous"]["git_branch"]
diff --git a/docs/source/_templates/footer.html b/docs/source/_templates/footer.html
index 2029d613c4eea83cd5e8b1e0bfd60cf71d445567..b7222e963151896de0aeee4bc70752457d0c48a2 100644
--- a/docs/source/_templates/footer.html
+++ b/docs/source/_templates/footer.html
@@ -2,8 +2,8 @@
 
 {%- block extrafooter %}
 <br><br>
-Generated on binarycpython git branch: development_0.9.2/2.2.1 git revision d1fde5c9bf26c24340a5de90244686794e870ba3 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_0.9.2/2.2.1">git url</a>.
+Generated on binarycpython git branch: development_0.9.3/2.2.1 git revision 9f0d89b99124813956c3fea2f1a26f137a069a16 url: <a href="https://gitlab.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_0.9.3/2.2.1">git url</a>.
 <br><br>
-Using binary_c with bit branch branch_david: git revision: "5747:20211102:404ce27a0" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>.
+Using binary_c with bit branch branch_david: git revision: "5834:20211216:a3146490e" url: <a href="https://gitlab.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>.
 
 {% endblock %}
\ No newline at end of file
diff --git a/docs/source/binary_c_parameters.rst b/docs/source/binary_c_parameters.rst
index b66bc0c57226dd2dcc729ece18ca996604c0dc16..8d359425fb5358bca38285a1f3ca6bd325823005 100644
--- a/docs/source/binary_c_parameters.rst
+++ b/docs/source/binary_c_parameters.rst
@@ -4,7 +4,7 @@ The following chapter contains all the parameters that the current version of bi
 
 
 This information was obtained by the following binary_c build:
-	**binary_c git branch**: branch_david	**binary_c git revision**: 5747:20211102:404ce27a0	**Built on**: Nov  2 2021 23:57:35
+	**binary_c git branch**: branch_david	**binary_c git revision**: 5834:20211216:a3146490e	**Built on**: Dec 20 2021 20:33:01
 
 
 Section: stars
@@ -288,10 +288,10 @@ Section: stars
 | **Macros**: ['OPACITY_ALGORITHM_PACZYNSKI = 0', 'OPACITY_ALGORITHM_FERGUSON_OPAL = 1', 'OPACITY_ALGORITHM_STARS = 2']
 
 | **Parameter**: wind_mass_loss
-| **Description**: Defines the algorithm used for stellar winds. 0 = none, 1 = Hurley et al. (2002), 2 = Schneider (2018).
+| **Description**: Defines the algorithm used for stellar winds. 0 = none, 1 = Hurley et al. (2002), 2 = Schneider (2018), 3 = Schneider + Sander and Wink (2020) for helium stars, 4 = Schneider + Hurley for LBV mass loss
 | **Parameter input type**: Unsigned integer
 | **Default value**: 3
-| **Macros**: ['WIND_ALGORITHM_NONE = 0', 'WIND_ALGORITHM_HURLEY2002 = 1', 'WIND_ALGORITHM_SCHNEIDER2018 = 2', 'WIND_ALGORITHM_BINARY_C_2020 = 3']
+| **Macros**: ['WIND_ALGORITHM_NONE = 0', 'WIND_ALGORITHM_HURLEY2002 = 1', 'WIND_ALGORITHM_SCHNEIDER2018 = 2', 'WIND_ALGORITHM_BINARY_C_2020 = 3', 'WIND_ALGORITHM_HENDRIKS_2022 = 4']
 | **Extra**: 0
 
 | **Parameter**: gbwind
@@ -486,6 +486,12 @@ Section: stars
 | **Default value**: 0
 | **Extra**: Ignore
 
+| **Parameter**: PPISN_core_mass_range_shift
+| **Description**: (Pulsational) Pair-Instability Supernova CO core mass range shift: Value by which we shift the range of CO core mass values that undergo PPISN. This is taken into account in the fit that calculates the mass removal. Negative number is shifting the range to lower masses, positive to higher masses.
+| **Parameter input type**: Float
+| **Default value**: 0
+| **Extra**: Ignore
+
 | **Parameter**: use_LWN_fallback
 | **Description**: Flag whether to use the Nazehdin-Lovegrove-Woosley hydrogen envelope ejection at failed supernova.
 | **Parameter input type**: Integer
@@ -561,7 +567,7 @@ Section: stars
 | **Parameter**: sn_kick_distribution_PPISN
 | **Description**: Set the distribution of speeds applied to PPISN supernovae. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).
 | **Parameter input type**: Integer
-| **Default value**: 1
+| **Default value**: 0
 | **Macros**: ['KICK_VELOCITY_FIXED = 0', 'KICK_VELOCITY_MAXWELLIAN = 1', 'KICK_VELOCITY_CUSTOM = 2']
 
 | **Parameter**: sn_kick_distribution_PISN
@@ -634,7 +640,7 @@ Section: stars
 | **Parameter**: sn_kick_dispersion_PPISN
 | **Description**: Set the dispersion of speeds applied to the survivor of a PPISN supernova. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).
 | **Parameter input type**: Float
-| **Default value**: 190
+| **Default value**: 0
 
 | **Parameter**: sn_kick_dispersion_PISN
 | **Description**: Set the dispersion of speeds applied to the survivor of a PISN supernova. 0=fixed, 1=maxwellian (hurley/BSE), 2=custom function (see monte_carlo_kicks.c).
@@ -968,7 +974,7 @@ Section: stars
 | **Parameter**: MINT_metallicity
 | **Description**: This sets the metallicity for MINT. It is ignored if set to -1.0, the default, in which case the normal metallicity parameter is used.
 | **Parameter input type**: Float
-| **Default value**: NULL
+| **Default value**: -1
 
 | **Parameter**: gaia_Teff_binwidth
 | **Description**: log10(Effective temperature) bin width used to make Gaia-like HRDs
@@ -1153,6 +1159,21 @@ Section: stars
 | **Parameter input type**: True|False
 | **Default value**: False
 
+| **Parameter**: degenerate_core_merger_nucsyn
+| **Description**: If TRUE, assume that in a degnerate core merger, energy is generated from nucleosynthesis of the whole core, and that this can disrupt the core. The BSE algorithm (Hurley et al. 2002) assumes this to be TRUE, but binary_c assumes FALSE by default. (FALSE)
+| **Parameter input type**: True|False
+| **Default value**: False
+
+| **Parameter**: degenerate_core_helium_merger_ignition
+| **Description**: If TRUE, assume that when there is a degenerate helium core merger, the star reignites helium. This is required to make R-type carbon stars. (TRUE)
+| **Parameter input type**: True|False
+| **Default value**: True
+
+| **Parameter**: degenerate_core_merger_dredgeup_fraction
+| **Description**: If non-zero, mix this fraction of the degenerate core during a merger.(0.0).
+| **Parameter input type**: Float
+| **Default value**: NULL
+
 Section: binary
 ---------------
 
@@ -1325,7 +1346,7 @@ Section: binary
 | **Parameter**: post_ce_objects_have_envelopes
 | **Description**: If TRUE then post-common-envelope objects have thin envelopes. You need this if you are to have post-CE post-AGB stars. Note that this *may* be unstable, i.e. you may end up having many CEEs. The mass in the envelope is controlled by post_ce_adaptive_menv. TRUE by default.
 | **Parameter input type**: True|False
-| **Default value**: True
+| **Default value**: False
 
 | **Parameter**: PN_comenv_transition_time
 | **Description**: post-common envelope transition time in years (1e2).  This is the time taken to move from CEE ejection to Teff > 30e4 K. Hall et al. (2013) suggest ~100 years.
@@ -1794,7 +1815,7 @@ Section: binary
 | **Default value**: NULL
 
 | **Parameter**: lambda_ce
-| **Description**: Common envelope parameter. The binding energy of the common envelope is G*M*Menv/(lambda*R). Typically this is taken to be 0.5, but if set to -1 binary_c uses the Dewi and Tauris fits instead, -2 uses the formalism of Wang, Jia and Li (2016) and if -3 then a polytropic formalism is used (see also comenv_splitmass).
+| **Description**: Common envelope parameter. The binding energy of the common envelope is G*M*Menv/(lambda*R). Typically this is taken to be 0.5, but if set to LAMBDA_CE_DEWI_TAURIS == -1 binary_c uses the Dewi and Tauris fits instead, LAMBDA_CE_WANG_2016 == -2 uses the formalism of Wang, Jia and Li (2016), if LAMBDA_CE_POLYTROPE == -3 then a polytropic formalism is used (see also comenv_splitmass) and if LAMBDA_CE_KLENCKI_2020 == -4 use Klencki et al. (2020).
 | **Parameter input type**: Float
 | **Default value**: 0.5
 | **Macros**: ['LAMBDA_CE_DEWI_TAURIS = -1', 'LAMBDA_CE_WANG_2016 = -2', 'LAMBDA_CE_POLYTROPE = -3', 'LAMBDA_CE_KLENCKI_2020 = -4']
@@ -2593,105 +2614,111 @@ Section: output
 | **Default value**: NULL
 | **Extra**: Ignore
 
+| **Parameter**: tides_diagnosis_log
+| **Description**: Enable logging to test MINT tides. Requires MINT. Choices are: 0 disabled, 1 enable lambda test.
+| **Parameter input type**: Integer
+| **Default value**: 0
+| **Extra**: Ignore
+
 Section: input
 --------------
 
 | **Parameter**: MINT_dir
 | **Description**: Location of MINT algorithm data.
 | **Parameter input type**: String
-| **Default value**: NULL
+| **Default value**: 
 | **Extra**: 
 
 | **Parameter**: MINT_data_cleanup
 | **Description**: Activate checks on incoming data to try to account for problems. Will make data-loading slower, but may fix a few things.
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: False
 | **Extra**: 
 
 | **Parameter**: MINT_MS_rejuvenation
 | **Description**: Turn on or off (hydrogen) main-sequence rejuvenation.
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: True
 | **Extra**: 
 
 | **Parameter**: MINT_remesh
 | **Description**: Turn on or off MINT's remeshing.
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: True
 | **Extra**: 
 
 | **Parameter**: MINT_use_ZAMS_profiles
 | **Description**: Use chemical profiles at the ZAMS if MINT_use_ZAMS_profiles is TRUE, otherwise set homogeneous abundances. (Default is TRUE, so we use the profiles if they are available.)
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: True
 | **Extra**: 
 
 | **Parameter**: MINT_fallback_to_test_data
 | **Description**: If TRUE, use the MINT test_data directory as a fallback when data is unavailable. (FALSE)
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: False
 | **Extra**: 
 
 | **Parameter**: MINT_disable_grid_load_warnings
 | **Description**: Use this to explicitly disable MINT's warnings when loading a grid with, e.g., missing or too much data.
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: False
 | **Extra**: 
 
 | **Parameter**: MINT_Kippenhahn
 | **Description**: Turn on or off MINT's Kippenhahn diagrams. If 0, off, if 1, output star 1 (index 0), if 2 output star 2 (index 1). Default 0.
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: 0
 | **Extra**: 
 
 | **Parameter**: MINT_nshells
 | **Description**: Set the initial number of shells MINT uses in each star when doing nuclear burning. Note: remeshing can change this. If MINT_nshells is 0, shellular burning and other routines that require shells will not be available. (200)
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: 200
 | **Extra**: 
 
 | **Parameter**: MINT_maximum_nshells
 | **Description**: Set the maximum number of shells MINT uses in each star when doing nuclear burning. Note that this will be limited to MINT_HARD_MAX_NSHELLS. (1000)
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: 1000
 | **Extra**: 
 
 | **Parameter**: MINT_minimum_nshells
 | **Description**: Set the minimum number of shells MINT uses in each star when doing nuclear burning. Note that this will be greater than or equal to MINT_HARD_MIN_NSHELLS, which is 0 by default. (0)
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: 10
 | **Extra**: 
 
 | **Parameter**: MINT_Kippenhahn_stellar_type
 | **Description**: Stellar type selector for Kippenhahn plots. Set to -1 to ignore, otherwise the stellar type number for which Kippenhahn plot data should be output.
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: -1
 | **Macros**: ['LOW_MASS_MS = 0', 'MS = 1', 'HG = 2', 'GIANT_BRANCH = 3', 'CHeB = 4', 'EAGB = 5', 'TPAGB = 6', 'HeMS = 7', 'HeHG = 8', 'HeGB = 9', 'HeWD = 10', 'COWD = 11', 'ONeWD = 12', 'NS = 13', 'BH = 14', 'MASSLESS_REMNANT = 15']
 | **Extra**: 
 
 | **Parameter**: MINT_Kippenhahn_companion_stellar_type
 | **Description**: Companion stellar type selector for Kippenhahn plots. Set to -1 to ignore, otherwise the stellar type number for the companion for which Kippenhahn plot data should be output.
 | **Parameter input type**: Integer
-| **Default value**: NULL
+| **Default value**: -1
 | **Macros**: ['LOW_MASS_MS = 0', 'MS = 1', 'HG = 2', 'GIANT_BRANCH = 3', 'CHeB = 4', 'EAGB = 5', 'TPAGB = 6', 'HeMS = 7', 'HeHG = 8', 'HeGB = 9', 'HeWD = 10', 'COWD = 11', 'ONeWD = 12', 'NS = 13', 'BH = 14', 'MASSLESS_REMNANT = 15']
 | **Extra**: 
 
 | **Parameter**: MINT_nuclear_burning
 | **Description**: Turn on or off MINT's nuclear burning algorithm.
 | **Parameter input type**: True|False
-| **Default value**: NULL
+| **Default value**: False
 | **Extra**: 
 
 | **Parameter**: MINT_minimum_shell_mass
 | **Description**: Minimum shell mass in MINT's nuclear burning routines.
 | **Parameter input type**: Float
-| **Default value**: NULL
+| **Default value**: 1e-06
 | **Extra**: 
 
 | **Parameter**: MINT_maximum_shell_mass
 | **Description**: Maximum shell mass in MINT's nuclear burning routines. :
 | **Parameter input type**: Float
-| **Default value**: NULL
+| **Default value**: 0.1
 | **Extra**: 
 
 Section: i/o
diff --git a/docs/source/grid_options_descriptions.rst b/docs/source/grid_options_descriptions.rst
index 916bbac09db9d0ad680ce8dbc5eebe6917f8ea74..c061fb90129825bbf7c7f4ed9289506401d6b10a 100644
--- a/docs/source/grid_options_descriptions.rst
+++ b/docs/source/grid_options_descriptions.rst
@@ -1,7 +1,7 @@
 Population grid code options
 ============================
 The following chapter contains all grid code options, along with their descriptions
-There are 9 options that are not described yet.
+There are 28 options that are not described yet.
 
 
 Public options
@@ -13,36 +13,118 @@ The following options are meant to be changed by the user.
 
 | **C_logging_code**: Variable to store the exact code that is used for the custom_logging. In this way the user can do more complex logging, as well as putting these logging strings in files.
 
+| **HPC_force_join**: Integer, default 0. If 1, and the HPC variable ("slurm" or "condor") is 3, skip checking our own job and force the join.
+
+| **HPC_rebuild_joinlist**: Integer, default 0. If 1, ignore the joinlist we would usually use and rebuild it automatically
+
 | **Moe2017_options**: No description available yet
 
+| **cache_dir**: No description available yet
+
 | **combine_ensemble_with_thread_joining**: Boolean flag on whether to combine everything and return it to the user or if false: write it to data_dir/ensemble_output_{population_id}_{thread_id}.json
 
-| **condor**: Int flag whether to use a condor type population evolution. Not implemented yet.
+| **command_line**: No description available yet
+
+| **condor**: Integer flag used to control HTCondor (referred to as Condor here) jobs. Default is 0 which means no Condor. 1 means launch Condor jobs. Do not manually set this to 2 (run Condor jobs) or 3 (join Condor job data) unless you know what you are doing, this is usually done for you.
+
+| **condor_ClusterID**: Integer. Condor ClusterID variable, equivalent to Slurm's jobid. Jobs are numbered <ClusterID>.<Process>
+
+| **condor_Process**: Integer. Condor Process variable, equivalent to Slurm's jobarrayindex. Jobs are numbered <ClusterID>.<Process>
+
+| **condor_bash**: String. Points the location of the "bash" command, e.g. /bin/bash, that is used in Condor launch scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **condor_batchname**: String. Condor batchname option: this is what appears in condor_q. Defaults to "binary_c-condor"
+
+| **condor_date**: String. Points the location of the "date" command, e.g. /usr/bin/date, that is used in Condor launch scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **condor_dir**: String. Working directory containing e.g. scripts, output, logs (e.g. should be NFS available to all jobs). This directory should not exist when you launch the Condor jobs.
+
+| **condor_env**: String. Points the location of the "env" command, e.g. /usr/bin/env or /bin/env, that is used in Condor launch scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **condor_extra_settings**: Dictionary. Place to put extra configuration for the CONDOR submit file. The key and value of the dict will become the key and value of the line in te slurm batch file. Will be put in after all the other settings (and before the command). Take care not to overwrite something without really meaning to do so.
+
+| **condor_getenv**: Boolean. If True, the default, condor takes the environment at submission and copies it to the jobs. You almost certainly want this to be True.
+
+| **condor_initial_dir**: String. Directory from which condor scripts are run. If set to the default, None, this is the directory from which your script is run.
+
+| **condor_kill_sig**: String. Signal Condor should use to stop a process. Note that grid.py expects this to be "SIGINT" which is the default.
+
+| **condor_memory**: Integer. In MB, the memory use (ImageSize) of the job.
+
+| **condor_njobs**: Integer. Number of jobs that Condor will run
+
+| **condor_postpone_join**: Integer. Use to delay the joining of Condor grid data. If 1, data is not joined, e.g. if you want to do it off the condor grid (e.g. with more RAM). Default 0.
+
+| **condor_postpone_submit**: Integer. Debugging tool. If 1, the condor script is not submitted (useful for debugging). Default 0.
+
+| **condor_pwd**: String. Points the location of the "pwd" command, e.g. /bin/pwd, that is used in Condor launch scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **condor_q**: String. The Condor_q command, usually "/usr/bin/condor_q" but will depend on your HTCondor installation.
+
+| **condor_requirements**: String. Condor job requirements. These are passed to Condor directly, you should read the HTCondor manual to learn about this. If no requirements exist, leave as an string.
+
+| **condor_should_transfer_files**: Integer. Condor's option to transfer files at the end of the job. You should set this to "YES"
+
+| **condor_snapshot_on_kill**: Integer. If 1 we save a snapshot on SIGKILL before exit.
+
+| **condor_stream_error**: Boolean. If True, we activate Condor's stderr stream. If False, this data is copied at the end of the job.
+
+| **condor_stream_output**: Boolean. If True, we activate Condor's stdout stream. If False, this data is copied at the end of the job.
+
+| **condor_submit**: String. The Condor_submit command, usually "/usr/bin/condor_submit" but will depend on your HTCondor installation.
+
+| **condor_universe**: String. The HTCondor "universe": this is "vanilla" by default.
+
+| **condor_warn_max_memory**: Integer. In MB, the memory use (ImageSize) of the job.
+
+| **condor_when_to_transfer_output**: Integer. Condor's option to decide when output files are transferred. You should usually set this to "ON_EXIT_OR_EVICT"
 
 | **custom_generator**: No description available yet
 
 | **custom_logging_func_memaddr**: Memory address where the custom_logging_function is stored. Input: int
 
+| **do_analytics**: No description available yet
+
 | **do_dry_run**: Whether to do a dry run to calculate the total probability for this run
 
+| **dry_run_hook**: Function hook to be called for every system in a dry run. The function is passed a dict of the system parameters. Does nothing if None (the default).
+
+| **dry_run_num_cores**: No description available yet
+
 | **ensemble_factor_in_probability_weighted_mass**: Flag to multiply all the ensemble results with 1/probability_weighted_mass
 
-| **evolution_type**: Variable containing the type of evolution used of the grid. Multiprocessing or linear processing
+| **evolution_type**: Variable containing the type of evolution used of the grid. Multiprocessing, linear processing or possibly something else (e.g. for Slurm or Condor).
+
+| **exit_after_dry_run**: If True, exits after a dry run. Default is False.
 
-| **exit_after_dry_run**: No description available yet
+| **exit_code**: No description available yet
 
 | **failed_systems_threshold**: Variable storing the maximum number of systems that are allowed to fail before logging their command line arguments to failed_systems log files
 
+| **function_cache**: Boolean, default True. If True, we use a cache for certain function calls.
+
+| **function_cache_TTL**: No description available yet
+
+| **function_cache_default_maxsize**: Integer, default 256. The default maxsize of the cache. Should be a power of 2.
+
+| **function_cache_default_type**: String. One of the following types: LRUCache, LFUCache, FIFOCache, MRUCache, RRCache, TTLCache, NullCache, NoCache. You can find details of what these mean in the Python cachetools manual, except fo NoCache which means no cache is used at all, and NullCache is a dummy cache that never matches, used for testing overheads.
+
+| **function_cache_functions**: No description available yet
+
 | **gridcode_filename**: Filename for the grid code. Set and used by the population object. TODO: allow the user to provide their own function, rather than only a generated function.
 
-| **log_args**: Boolean to log the arguments. Unused 
+| **joinlist**: No description available yet
 
-| **log_args_dir**: Directory to log the arguments to. Unused
+| **log_args**: Boolean to log the arguments.
 
-| **log_dt**: No description available yet
+| **log_args_dir**: Directory to log the arguments to.
+
+| **log_dt**: Time between verbose logging output.
 
 | **log_file**: Log file for the population object. Unused
 
+| **log_newline**: Newline character used at the end of verbose logging statements. This is \n (newline) by default, but \x0d (carriage return) might also be what you want.
+
 | **log_runtime_systems**: Whether to log the runtime of the systems . Each systems run by the thread is logged to a file and is stored in the tmp_dir. (1 file per thread). Don't use this if you are planning to run a lot of systems. This is mostly for debugging and finding systems that take long to run. Integer, default = 0. if value is 1 then the systems are logged
 
 | **max_queue_size**: Maximum size of the queue that is used to feed the processes. Don't make this too big! Default: 1000. Input: int
@@ -51,25 +133,93 @@ The following options are meant to be changed by the user.
 
 | **multiplicity_fraction_function**: Which multiplicity fraction function to use. 0: None, 1: Arenou 2010, 2: Rhagavan 2010, 3: Moe and di Stefano (2017) 2017
 
-| **n_logging_stats**: No description available yet
+| **n_logging_stats**: Number of logging statistics used to calculate time remaining (etc.). E.g., if you set this to 10 the previous 10 calls to the verbose log will be used to construct an estimate of the time remaining.
 
-| **num_cores**: The number of cores that the population grid will use. The multiprocessing is useful but make sure to figure out how many logical cores the machine has (use e.g. psutil.cpu_count(logical=False) to find the true number of cores, psutil.cpu_count(logical=True) to find the number of logical cores). The core is multi processed, not multi threaded, and will gain no extra speed when num_cores exceeds the number of logical cores. Input: int
+| **num_cores**: The number of cores that the population grid will use. You can set this manually by entering an integer great than 0. When 0 uses all logical cores. When -1 uses all physical cores. Input: int
+
+| **num_cores_available**: No description available yet
+
+| **original_command_line**: No description available yet
+
+| **original_submission_time**: No description available yet
+
+| **original_working_diretory**: No description available yet
 
 | **parse_function**: Function that the user can provide to handle the output the binary_c. This function has to take the arguments (self, output). Its best not to return anything in this function, and just store stuff in the self.grid_results dictionary, or just output results to a file
 
+| **print_stack_on_exit**: If True, prints a stack trace when the population's exit method is called.
+
 | **repeat**: Factor of how many times a system should be repeated. Consider the evolution splitting binary_c argument for supernovae kick repeating.
 
+| **restore_from_snapshot_dir**: No description available yet
+
+| **restore_from_snapshot_file**: No description available yet
+
+| **return_after_dry_run**: If True, return immediately after a dry run (and don't run actual stars). Default is False.
+
 | **run_zero_probability_system**: Whether to run the zero probability systems. Default: True. Input: Boolean
 
+| **rungrid**: No description available yet
+
 | **save_ensemble_chunks**: No description available yet
 
-| **slurm**: Int flag whether to use a Slurm type population evolution.
+| **save_population_object**: No description available yet
+
+| **save_snapshots**: No description available yet
+
+| **slurm**: Integer flag used to control Slurm jobs. Default is 0 which means no Slurm. 1 means launch Slurm jobs. Do not manually set this to 2 (run Slurm jobs) or 3 (join Slurm job data) unless you know what you are doing, this is usually done for you.
+
+| **slurm_array**: String. Override for Slurm's --array option, useful for rerunning jobs manually. Default None.
+
+| **slurm_array_max_jobs**: Integer. Override for the max number of concurrent Slurm array jobs. Default None.
+
+| **slurm_bash**: String. Points the location of the "bash" command, e.g. /bin/bash, that is used in Slurm scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **slurm_date**: String. Points the location of the "date" command, e.g. /usr/bin/date, that is used in Slurm scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **slurm_dir**: String. Working directory containing e.g. scripts, output, logs (e.g. should be NFS available to all jobs). This directory should not exist when you launch the Slurm jobs.
+
+| **slurm_env**: String. Points the location of the "env" command, e.g. /usr/bin/env or /bin/env, that is used in Slurm scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **slurm_extra_settings**: Dictionary of extra settings for Slurm to put in its launch script. Please see the Slurm documentation for the many options that are available to you.
+
+| **slurm_jobarrayindex**: Integer. Slurm job array index. Each job is numbered <slurm_jobid>.<slurm_jobarrayindex>.
+
+| **slurm_jobid**: Integer. Slurm job id. Each job is numbered <slurm_jobid>.<slurm_jobarrayindex>.
+
+| **slurm_jobname**: String which names the Slurm jobs, default "binary_c-python".
+
+| **slurm_memory**: String. Memory required for the job. Should be in megabytes in a format that Slurm understands, e.g. "512MB" (the default).
+
+| **slurm_njobs**: Integer. Number of Slurm jobs to be launched.
+
+| **slurm_ntasks**: Integer. Number of CPUs required per array job: usually only need this to be 1 (the default).
+
+| **slurm_partition**: String containing the Slurm partition name. You should check your local Slurm installation to find out partition information, e.g. using the sview command.
+
+| **slurm_postpone_join**: Integer, default 0. If 1 do not join job results with Slurm, instead you have to do it later manually.
+
+| **slurm_postpone_sbatch**: Integer, default 0. If set to 1, do not launch Slurm jobs with sbatch, just make the scripts that would have.
+
+| **slurm_pwd**: String. Points the location of the "pwd" command, e.g. /bin/pwd, that is used in Slurm scripts. This is set automatically on the submit machine, so if it is different on the nodes, you should set it manually.
+
+| **slurm_sbatch**: String. The Slurm "sbatch" submission command, usually "/usr/bin/sbatch" but will depend on your Slurm installation. By default is set automatically.
+
+| **slurm_time**: String. The time a Slurm job is allowed to take. Default is 0 which means no limit. Please check the Slurm documentation for required format of this option.
+
+| **slurm_warn_max_memory**: String. If we set slurm_memory in excess of this, warn the user because this is usually a mistake. Default "1024MB".
 
 | **source_file_filename**: Variable containing the source file containing lines of binary_c command line calls. These all have to start with binary_c.
 
 | **start_at**: No description available yet
 
-| **symlink latest gridcode**: No description available yet
+| **start_time**: No description available yet
+
+| **status_dir**: Directory where grid status is stored
+
+| **stop_queue**: No description available yet
+
+| **symlink_latest_gridcode**: No description available yet
 
 | **tmp_dir**: Directory where certain types of output are stored. The grid code is stored in that directory, as well as the custom logging libraries. Log files and other diagnostics will usually be written to this location, unless specified otherwise
 
@@ -77,6 +227,8 @@ The following options are meant to be changed by the user.
 
 | **weight**: Weight factor for each system. The calculated probability is multiplied by this. If the user wants each system to be repeated several times, then this variable should not be changed, rather change the _repeat variable instead, as that handles the reduction in probability per system. This is useful for systems that have a process with some random element in it.
 
+| **working_diretory**: No description available yet
+
 Moe & di Stefano sampler options
 --------------------------------
 The following options are meant to be changed by the user.
@@ -87,69 +239,69 @@ The following options are meant to be changed by the user.
 | **Mmin**: Minimum stellar mass
 
 | **multiplicity_model**: 
-	multiplicity model (as a function of log10M1)
-	
-	You can use 'Poisson' which uses the system multiplicity
-	given by Moe and maps this to single/binary/triple/quad
-	fractions.
+	        multiplicity model (as a function of log10M1)
 	
-	Alternatively, 'data' takes the fractions directly
-	from the data, but then triples and quadruples are
-	combined (and there are NO quadruples).
+	        You can use 'Poisson' which uses the system multiplicity
+	        given by Moe and maps this to single/binary/triple/quad
+	        fractions.
 	
+	        Alternatively, 'data' takes the fractions directly
+	        from the data, but then triples and quadruples are
+	        combined (and there are NO quadruples).
+	        
 
 | **multiplicity_modulator**: 
-	[single, binary, triple, quadruple]
+	        [single, binary, triple, quadruple]
 	
-	e.g. [1,0,0,0] for single stars only
-	     [0,1,0,0] for binary stars only
-	
-	defaults to [1,1,0,0] i.e. singles and binaries
+	        e.g. [1,0,0,0] for single stars only
+	             [0,1,0,0] for binary stars only
 	
+	        defaults to [1,1,0,0] i.e. singles and binaries
+	        
 
 | **normalize_multiplicities**: 
-	'norm': normalise so the whole population is 1.0
-	        after implementing the appropriate fractions
-	        S/(S+B+T+Q), B/(S+B+T+Q), T/(S+B+T+Q), Q/(S+B+T+Q)
-	        given a mix of multiplicities, you can either (noting that
-	        here (S,B,T,Q) = appropriate modulator * model(S,B,T,Q) )
-	        note: if you only set one multiplicity_modulator
-	        to 1, and all the others to 0, then normalising
-	        will mean that you effectively have the same number
-	        of stars as single, binary, triple or quad (whichever
-	        is non-zero) i.e. the multiplicity fraction is ignored.
-	        This is probably not useful except for
-	        testing purposes or comparing to old grids.
-	
-	'raw'   : stick to what is predicted, i.e.
-	          S/(S+B+T+Q), B/(S+B+T+Q), T/(S+B+T+Q), Q/(S+B+T+Q)
-	          without normalisation
-	          (in which case the total probability < 1.0 unless
-	          all you use single, binary, triple and quadruple)
+	        'norm': normalise so the whole population is 1.0
+	                after implementing the appropriate fractions
+	                S/(S+B+T+Q), B/(S+B+T+Q), T/(S+B+T+Q), Q/(S+B+T+Q)
+	                given a mix of multiplicities, you can either (noting that
+	                here (S,B,T,Q) = appropriate modulator * model(S,B,T,Q) )
+	                note: if you only set one multiplicity_modulator
+	                to 1, and all the others to 0, then normalising
+	                will mean that you effectively have the same number
+	                of stars as single, binary, triple or quad (whichever
+	                is non-zero) i.e. the multiplicity fraction is ignored.
+	                This is probably not useful except for
+	                testing purposes or comparing to old grids.
 	
-	'merge' : e.g. if you only have single and binary,
-	          add the triples and quadruples to the binaries, so
-	          binaries represent all multiple systems
-	          ...
-	          *** this is canonical binary population synthesis ***
+	        'raw'   : stick to what is predicted, i.e.
+	                  S/(S+B+T+Q), B/(S+B+T+Q), T/(S+B+T+Q), Q/(S+B+T+Q)
+	                  without normalisation
+	                  (in which case the total probability < 1.0 unless
+	                  all you use single, binary, triple and quadruple)
 	
-	          It only takes the maximum multiplicity into account,
-	          i.e. it doesn't multiply the resulting array by the multiplicity modulator again.
-	          This prevents the resulting array to always be 1 if only 1 multiplicity modulator element is nonzero
+	        'merge' : e.g. if you only have single and binary,
+	                  add the triples and quadruples to the binaries, so
+	                  binaries represent all multiple systems
+	                  ...
+	                  *** this is canonical binary population synthesis ***
 	
-	          Note: if multiplicity_modulator == [1,1,1,1]. this option does nothing (equivalent to 'raw').
+	                  It only takes the maximum multiplicity into account,
+	                  i.e. it doesn't multiply the resulting array by the multiplicity modulator again.
+	                  This prevents the resulting array to always be 1 if only 1 multiplicity modulator element is nonzero
 	
+	                  Note: if multiplicity_modulator == [1,1,1,1]. this option does nothing (equivalent to 'raw').
+	        
 
 | **q_high_extrapolation_method**: Same as q_low_extrapolation_method
 
 | **q_low_extrapolation_method**: 
-	q extrapolation (below 0.15) method
-	    none
-	    flat
-	    linear2
-	    plaw2
-	    nolowq
-	
+	        q extrapolation (below 0.15) method
+	            none
+	            flat
+	            linear2
+	            plaw2
+	            nolowq
+	        
 
 | **ranges**: 
 
@@ -196,6 +348,8 @@ The following options are not meant to be changed by the user, as these options
 
 | **_grid_variables**: Dictionary storing the grid_variables. These contain properties which are accessed by the _generate_grid_code function
 
+| **_killed**: No description available yet
+
 | **_loaded_Moe2017_data**: Internal variable storing whether the Moe and di Stefano (2017) data has been loaded into memory
 
 | **_main_pid**: Main process ID of the master process. Used and set by the population object.
@@ -204,6 +358,8 @@ The following options are not meant to be changed by the user, as these options
 
 | **_probtot**: Total probability of the population.
 
+| **_queue_done**: No description available yet
+
 | **_set_Moe2017_grid**: Internal flag whether the Moe and di Stefano (2017) grid has been loaded
 
 | **_start_time_evolution**: Variable storing the start timestamp of the population evolution. Set by the object itself.