make things more general