iterator adapter factory