does the models() function return a non-const ref too?  better to return a pointer, IMO.