Refactor out actions to display arguments; add explain() method to devices; set services/actions as attrs on devices/services.