generalizing some things