Add ExclusiveTask to encapsulate exclusivity