restructure code-layout