implemented for cycle