refactor typelist_element