private boolean redo() throws IOException, ParseException {
		if (redoList.isEmpty()) {
			messageToUser = MSG_CANNOT_REDO_ANYMORE;
			return false;
		}
		ActionEntry ae = redoList.pop();
		Action done = ae.getAction();
		Task t = ae.getTask();

		actionList.push(ae);
		Command command = done.getCommand();
		Task task = done.getTask();

		TaskData _task = toTaskData(task);
		switch (command) {
		case ADD:
			if (task.isDone()) {
				this.done = true;
			}
			return addTask(_task, true);
		case DELETE:
			if (task.isDone()) {
				this.done = true;
			}
			return deleteTask(_task, true);
		case MODIFY:
			return modifyTask(task, t, true);
		case MARK:
			return mark(_task, true);
		case BLOCK:
			ArrayList<TaskData> blockList = unblockSlot.pop();
			blockSlot.push(blockList);
			return block(blockList);
		case UNBLOCK:
			ArrayList<TaskData> unblockList = blockSlot.pop();
			unblockSlot.push(unblockList);
			return unblock(unblockList);
		default:
			return false;
		}
	}