implement Task, Interruptible, InterruptibleTask