1. A method of assembling components in a software system, said software system comprising a plurality of clients shielded from a plurality of handlers by an application controller, wherein the plurality of handlers provide an implementation of functionality requested by at least one of the clients, said method comprising: a) providing, by an agent to a requesting client, a reference to an application controller configured with a set of handlers; b) constructing a context by the requesting client, said context comprising the input parameters required by the requested functionality; c) invoking by the requesting client the application controller referenced in a); d) iterating over and executing, by the application controller referenced in a), each of the handlers in the set of handlers, wherein each of the handlers is provided a reference to the context; and e) reading by the requesting client any output from the application controller from the context; wherein the agent is a common component accessible by all the clients and wherein the agent has access to configuration details of any configured application controller and their associated sets of handlers.