finally implement tail recursion
build