more cleaner struvture