<div>A somewhat tricky concern is that that the extra functionality in question depends on a bunch of primitive definitions that lie below this in the package and the AD engine is used by a layer on top.</div>
<div> </div>
<div>So moving it out would introduce a circular dependency back into the package or require me to stratify into two packages. When I looked into partitioning the package for another reason I found that I couldn&#39;t do so without introducing some orphan instances, so it&#39;ll probably be a tricky bit of surgery to split out. That said, it&#39;s probably still worth doing.</div>