added shift method into iterative inject