remaining problem: shifting less or more than once a cycle, reversing
more than once a cycle