refactory the code, use the Zresume::List to store the nested information