* cursor refactoring