rebuild & improve structure