self-defined data type