input generalization