recursion layed out