restructure code
reconstructure