handle list in struct and struct in list