1.Refactor command, add redo(); 2. Refactor TextSelections, make non readonly operations cleaner