ok this may be it:

data T a = T {

a::a,

common::Int

}

type T' a b = T (a,b)

# of record fields stays the same however we cram more data into the 'a' field.

it surely works. Thank you.