I have a weired architecture for the downloader system. The idea is to expose as less API, signals and slots included, as possible to QML. But I need the downloader to notify the models for data change (like when image is available). The idea is to expose the downloader object (used by a thread), so that the models can connect to it. The downloader object directly receives data to download from the models themselves (actually from the worker object of the model), and they notify the model when data changed.