move cat() into class T; remove descendants()
update TODO