start of recursion