generic changes, process refactoring, `rotate` implementation and tests.
readme updated.