1. A method, comprising: discovering a module associated with a controlled device by an agent associated with a remote monitoring system; evaluating whether the module is self-describing at runtime and before installation of the module; responsive to determining that the module is self-describing, requesting a run-time capabilities object of an object-oriented programming language from the module; receiving the run-time capabilities object; and registering the controlled device with the remote monitoring system according to the run-time capabilities object.