make Task abstract