A bit of generalization and clean-up