function evalution...
tail recursion.