Isn't this tail recursive?