pull from mitch
fix up and generalize interface for new/more complicated class expressions, etc.