Some more refactoring to create a cleaner model. Pre-optimisation is the root of all evil!