nice recursion.