re-orgnize the structure