I really miss having something like a `struct` in Mathematica. I know of (and regularly use) a couple of programming techniques which feel like a `struct` (e.g., using downvalues), but are ultimately unsatisfactory (perhaps I'm using downvalues incorrectly). What programming approaches are available which provide similar functionality to a `struct`?