Added more State implementation and tests