robust upgrade - handle strings and lists in content