in reply to Hash Pipe Problem
Not exactly the better way but you can reduce one operation overhead.
(!$IsFinished{'A'} or !$IsFinished{'B'}) can be written as
(!($IsFinished{'A'} and $IsFinished{'B'})).
The previous one has 3 operations while the latter has only 2 operations