update, re-organize the structure