Programs that support tree structure are, for example, OmniOutliner and Mindjet MindManager. And of course IDEs like oXygen and IntelliJ IDEA. There are many possibilities to support structure: (1) creating and editing tasks (2) navigating and moving tasks (3) selecting tasks and performing actions The following list is a starter to think about this topic. creating and editing tasks + add a task before/after current position (already works in Checkvist) + add a subtask at first/last position + group tasks under a new parent task + split a task at cursor position + merge selected tasks into one Note that OmniOutliner has five creation options. oXygen provides 'append child', 'insert before', 'insert after'. Mindjet can parse a task to detect an enumeration and split it into several tasks or subtasks. navigating and moving tasks + go one level up (without collapsing) + go to the first/last task (within the current parent, not globally) + move task to the first/last position (within the current parent, not globally) + go to the previous/next sibling (also when subtasks are expanded) + move task to the previous/next sibling Note that all those "go/move to sibling" actions should also work in hoist mode (cf. Evernote presentation mode, where it is possible to navigate to the next/previous note) selecting tasks and performing actions Multiple selection is the basis for doing something on a set of items instead of doing it one by one. Hence it is the basis for efficiently maintaining lists. The following are taken from Mindjet: + select all siblings + select all siblings above only + select all siblings below only + select all subtopics (on next level only) + select topic and all descendants (all levels) Frequently I move a task inside another by pressing tab. This creates a subtask at the last position, but I often want it at the first position. Therefore, sometimes I create a dummy task above the target task, add the subtask there and move it down with strg+down or strg+j. Could be easier. Note that cut and paste seems to be a lot faster recently, so that's an option. All actions need to be checked for consistent behavior when working in the three contexts: whole list, single task, multiple selected tasks. E. g. ec should work on the selection and not always on the whole list. Or focus/hoist should work with multiple selected tasks (with some constraints, of course). Where should alt+enter add the new task: above all selected tasks, or above the current (last selected) task?