Deal with recursive type