because tail rec if biutiful