restucturing
restucturing 2
final ver