public static void main(String[] args) {
    try {
      // Parse command line arguments
      String organism =
          null; // The target organism for the simulation, determines the genome data that will be
      // parsed by the simulation executive.
      if (args[0].equals("Hum")) organism = "H**o sapiens";
      else if (args[0].equals("Mou")) organism = "Mus musculus";
      else if (args[0].equals("Test")) organism = "Test";
      else
        printString(
            "Please check that you provided a valid organism name as the first input argument!");

      int sex = 0;
      if (args[1].equals("F")) sex = FEMALE;
      else if (args[1].equals("M")) sex = MALE;
      else printString("Please check that you provided 'F' or 'M' for gender!");

      final int INITIAL_POPULATION_SIZE = Integer.parseInt(args[2]);
      final int SIM_DURATION = Integer.parseInt(args[3]);
      final int TIME_INTERVAL = 1; // Integer.parseInt(args[4]);

      /**
       * **************************************************** Read the genome_data file to obtain
       * data on the size of each chromosome. Store this data in a two dimensional array
       */
      File genome_data_file = new File("Genome_data.txt");
      genome_data = importGenomeData(genome_data_file, organism, sex);

      /** *************************************************** */
      List<Cell> cell_population =
          new ArrayList<Cell>(); // Define an arraylist to hold the initial population of cells
      cell_population =
          initiatePopulation(
              cell_population, INITIAL_POPULATION_SIZE); // Initialise the initial population

      // Run the simulation executive, providing the duration to run the simulation for, the time
      // intervals at which events are determined, the initial cell population
      runSimulationExecutive(SIM_DURATION, TIME_INTERVAL, cell_population, 2);

      // for (String s : genome_data) //PRINT CONTENTS OF GLOBAL GENOME DATA ARRAY
      //  printString(s);
    } catch (NumberFormatException | IOException error) {
      // int missing_argument = Integer.parseInt(error.getMessage()) + 1;
      // print("Argument number " + missing_argument + " missing! Enter the correct number of
      // arguments."); // Print error message on console if there are missing arguments
      printString(
          "Oops! Something is wrong with the input values you provided. Check that you have entered the correct number, and types of arguments. Error type => "
              + error.getMessage());
      // Catch null pointer exceptions!!!
    } // try-catch

    // ****************************************
    // 1. Set a max time to run simulation
    // 2. Set time intervals
    // 3. Vars for fraction_dividing_cells, rate_cell_death, doubling_time/division_rate235
    // 4. Don't use a static variable for current_timepoint. Provide this value each time you deal
    // with a cell, i.e in the for loop
    // 5. cell_cycle_duration
    // 6. cell_cycle_frequency

    // ***Maybe store all generations in single rows/columns of a two dimensional array?

  } // Method main