unfinish! uses @str.size instead of unrestored @cursor