rambling about semantics of ADTs