first implementation of total type_list