Took out the middle man WordsBlockGeneration and matches are memoized straight from getMatches