rename valid_change() -> validate()