recursive vs iter decomposed