I would prefer to move those states (that are not yet there) into #538, and use that interface instead of new yet another class that duplicates logic.

@pjedrzejewski @winzou ?