seperate code generation