hidden toSource, changed handler api