improve signal abstraction in task class