Add onChanged callback