added rotate, passes all rotate tests