performs the task