refactoring declarate codegen