squash npes
reimplement Specify explicit type, and add Generalize type