The machine struct provides a lot of functionality and relies on the providers to do their job correctly.