Add State Design pattern