restructure code
restructure code