add non-recursive size2 method