Now uses RecursiveTask and ForkJoinPool instead of futures. Shouldn't run out of memory anymore