[eluser]John_Betong_002[/eluser]
I think that you should ideally adopt the technique I suggested"
1. autoload m_application common model
2. have one m_specific model allocated for each controller loaded in __constructor()
As you mentioned about "always refining stuff" aim to have unique model functions. ie if the m_specific->get_data() is called from another controller then it should be transferred to your m_application model.
Similarly if a m_application->get_data() is only used once then it should be moved to m_specific->get_data() function.
I think if you plan towards this way of working then it should cater for the majority of cases and any odd-ball functions to be moved to the m_application model.
edit:
My reasoning behind adopting the specified approach is to reduce the unnecessary loading (memory grabbing) modules which are not used.