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