moved more code into common_code_generator