add steps pattern recursion