init recursion