state pattern update again