1. A method of assembling components in a software system, said software system comprising a plurality of clients ( 101 a , 101 b , 110 c ) shielded from a plurality of handlers ( 105 , 109 , 111 ) by an application controller ( 103 ), wherein the plurality of handlers provide an implementation of functionality requested by at least one of the clients, said method comprising the steps of: a) providing, by an agent to a requesting client ( 101 a ), a reference to an application controller ( 103 ) configured with a set of handlers ( 105 , 109 , 111 ); b) constructing a context by the client ( 101 a ), said context comprising the input parameters required by the requested functionality; c) invoking by the client ( 101 a ) the application controller ( 103 ) referenced in step a); d) iterating over and executing, by the application controller ( 103 ), 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 client any output from the application controller from the context; wherein the agent is a common component accessible by all the clients ( 101 a , 101 b , 101 c ) and wherein the agent has access to configuration details of any configured application controller and their associated sets of handlers.