not splicing 2 or 3. if return moved outside, then infinite loop
pull completed