more generalization, because that last patch wasn't general enough