1. A method for initializing a module comprising: identifying a module for initialization; and performing a plurality of processing phases on the module and all modules in a dependency graph of the module, wherein the performing comprises, for each module: executing a processing phase of the plurality of processing phases on the module; determining whether the processing phase has been executed on all modules in a dependency graph of the module; and when the processing phase has been executed for all modules in the dependency graph of the module, executing a subsequent processing phase of the plurality of processing phases on the module, wherein at least one processing phase of the plurality of processing phases comprises executing custom initialization code.