basic tail-call optimization, more coming soon