need to redesign the structure