Add recursion support