the iteration strategy in weird, cannot figure out how to make it composable... messy