more or less a task runner implemented