1 ) A method for enabling a software application running on a computing device to cause the most suitable code module from a set of code modules to be executed, the method comprising a) identifying characteristic or properties which the most suitable code module should possess; b) passing the characteristics or properties to each of the possible functionally compatible code modules, either directly or via one or more intermediate layers; c) using the code modules to each carry out a deterministic calculation of how well they conform to the characteristics or properties and to return the result as a numeric score, either to the software application or to an intermediate layer; and d) executing the module having the best score, either directly by the software application or via an instantiation performed by an intermediate layer.