restruct project architecture