adt: record ctor + clone