When writing QML applications, one of the most important parts is how to set up your software architecture. You are faced with a long list of design choices: What should go where? How do things communicate with each other? If you go wrong with these, you will hurt all development in your project. And even worse, those choices are the hardest to change later in the project. The aim of this talk is to give you an understanding of the choices you will be faced when deciding where to place the split between C++ and QML. When you understand the choices and the consequences of the decisions, you will be able to build better applications. I will also show you how the GUI layers can or should access the lower parts of the application. I will talk about the possible choices and why to choose one thing over another. For example, what is the consequence of instantiating an object in C++ and exposing this to QML versus exposing the type and instantiating in QML? I have written a lot of QML based applications, and finding this split between C++ and QML is always at the heart of the architecture. The decisions made here are vital for the maintainability of a project. And it is my hope that I can help you make better decisions after listening to this talk.