Throwing exception if infinite loop detected in phase vs. executePhase...this is probably not optimal, but it's a start.