non-recursive versions