generalize add