some complicated functionality.  a task can wait for a new task.