State Design Pattern with method to check if changed