Added abstract base class for State