modify task and evaluation to data structure so that tasks are inserted behind their calling functions even if some other task is inserted before them.