trigger states on change