dynamic shift type