hey, no reason to disallow zeroary aggregates
cache more calls to scheme() since Join.scheme is recursive