optimize array shifting