generalize interfaces