Redefinition

Added support for the redefinition branch on the compiler. 

This should be merged at the same time as the branch on the compiler!!