add abstract task class
refactor main and subtask
add tui