add package spec factory function that Ilan will memoize and use