thru form generalization