shift in its own fn