This document discusses using Moo and the System::Image::Update module to manage firmware updates on embedded devices. It provides examples of using Moo to define classes, roles, attributes, and methods. It also demonstrates how System::Image::Update can be used to implement a self-sustaining daemon for handling firmware updates through a state machine. The document describes how middleware can intercept the update process and provide status information. It aims to provide real world examples of using Moo for object oriented programming in Perl.