fix tail-call optimization