add non-recursive