self-recursion, loop, stepHd