WARNING: most of the class and methods in this header are not safe to use from a view-model's constructor because they rely on shared-pointers to be available for that view-model. Iterates all models that exist in a single list from the start model