adding stateImpl class