made a lot of changes, esp with shift/rotate/add/delete