redesigned struct