use V-core SpecificationInterface instead