init and task are abstract