Add In the module pass, and use the legacy pass manager to run it (only cause the new pass manager threw our the baby, the bathwater, and the bath when I tried to use it O.o).
Add a move constructor too.