fix logic to work for all non-objects, and preserve strings