Added redefinition checker that will throw an error if you try to improperly use redefinition