first cut of pushing restriction and atomic type creation logic into core package
updating compiler to delegate restriction constructing logic to mingle/core