know when to shift l/r
apply rule (with shift l/r), then move pointer