using lower_dict for better __eq__ semantics preservation