Recursive init