The list of words and answers is built before the exercise is ran to prevent list generation logic from interfering with application timing. First the algorithm checks to see if there is data from the previous experiment run relating to input keys. If there is the algorithm sets the keys to the opposite of what they were in the previous round. The algorithm then checks to see if there is info about the list of words and answers used in the previous experiment run. If there is it populates an array of objects to use for answer balancing later in the algorithm. The algorithm then builds a list of all animal words from experiment data to use with word list generation. Once all variables are initialized the algorithm loops until the list of words and questions for the experiment matches the list count set in advanced settings. On each loop the algorithm pulls a random word from the animal word list and checks if it has been used. If it has not been used it is added to the list. The algorithm then checks to see the previous answer for the word if previous question info is available. If previous question info is available the algorithm uses the question that was not used in the previous round. If the previous question is not available a random question is selected from available questions for that word. The word and question info is then added to the experiment data and the loop continues until trial length has been met.