Haven't thought this through yet, but setDefinition() should be on a subclass of ModuleDefinition