improve module structures