childChanged now uses pushPayload()