opaque data types as empty struct
add DiffList