finish off abstracting the spec