mjn: i'd like to pass generateCode a filename as well-- that way we can propagate the filedialogbox up to the passiveUI and reserve the aggressiveUI for interaction that comes up only *after* the codeGen, layout, etc process begins (i.e., error message boxes, etc) generateCode(CODE_TYPE, filename) also, i don't see why you should get a pointer to the graph. the data manager encapsulates the graph so you should be constructed with a ptr to the data manager and then ask it for a list of objects and connections when you need it to generate code. di: One problem mjn pointed out, and this applies to load/save too. The aggresiveUI can be used to display error messages and such, but we may want some mechanism for the user to fix these errors without quitting the codegen. This may involve aggressiveUI accessing the datamanager and then call codegen to resume, which involves circular dependencies. We need to address this issue during the next meeting.