heavy recursion