works, except for 4 shift limit