Hi Cassius, first of all, thanks a lot for this very interesting series. I have two main questions and I hope you can help me: how can we separate the viewmodel from the view, when the viewstate contains some variable related to flutter (that we don't want to access from the viewmodel)? For example if a OverlayEntry or a TransformationController are part of the viewstate, and there is a logic in the viewstate controlling those variables, how would you manage that situation? We should not depend on flutter packages in the viewmodel, right? The state and its logic should be indipendent from the way the state is presented, right? Look at this function in the viewstate for example (where the _mmsl is the viewmodel): void _zoomToWaypoint(Offset pos) { final size = MediaQuery.of(context).size; final mapW = (_mmsl.cameraOn && _mmsl.viewSwapState == 0) ? size.width / 2 : size.width; final px = Offset(pos.dx * mapW, pos.dy * size.height); final newScale = (_mmsl.zoomLevel + 25) / 100; final tx = mapW / 2 - px.dx * newScale; final ty = size.height / 2 - px.dy * newScale; final matrix = Matrix4.identity() ..translate(tx, ty) ..scale(newScale); _mmsl.zoomLevel = _mmsl.zoomLevel + 25; setState(() { _transformController.value = matrix; }); } I'm very newbie on Flutter and I 'm trying to do a refactoring of a new internal project (to my company), so I'm studying hard, very hard! :) There is a page where there are two lists of objects (entities) to show. The viewmodel is shared between the main view and a custom widget (child of the main view) Now, putting all inside the viewmodel, it means that every time I copy the state to add it to the sink, I have to shallow (or deep) copy all the entities in the list? Do you think is efficient to do that, adding a state, full of variables and lists? Should I just copy the reference of the two lists (actually leaving them the same)? Could be the observer pattern (subscribers observing a subject) more efficient in this case? The state is not copied, just modified inside the viewmodel, and the subject (viewmodel) just emits a synchronous event to the subscribers (calling their callback function). Finally the observers receiving the event, call setState() {() {}), just to refresh the pages. I'm not still fully convinced that a single stream is the only way to go. For example, if you have a container showing a camera feed (30 fps) and the rest of page stays pretty the same, most of the time (but could change sometime), having a BIG StreamBuilder for the entire page, means that all the widgets of the page will be rebuilt at 30 fps, even if the rest of the state variables are not changed, just because the video stream is playing. In that case, may be, we should expose two streams, one for the whole state, and one specific for the video stream, accessed by a variable inside the state. Is it right? Thanks a lot. Best regards.