dict.put now traverses metadata instead of data to allow clearing of dicts. this probably breaks stuff