add better algorithm for rotate using indexes instead of direct positions
add completed rotate method revisions. semantic changes only; no functional difference.