add state pattern modyf