move SpecificationInterface out of core