A method comprising: receiving a user input, via a user interface , identifying a task to be performed; determining if one or more software packages local to a task query apparatus are configured to perform the task; if it is determined that at least one software packages local to the task query apparatus is configured to perform the task, performing the task using a local software package; if it is determined that no software packages local to the task query apparatus are configured to perform the task, the method further comprising: generating a task based query at a task query apparatus , wherein the task based query is generated based on the user input and identifies the user identified task to be performed; causing the task based query to be provided from the task query apparatus to a remote service discovery engine ; and receiving, at the task query apparatus , from the remote service discovery engine and as a response to the task based query, an indication of a remote service of a plurality of remote services that is configured to perform the user identified task, the indication comprising access instructions for querying the remote service; and accessing the remote service to provide requested functionality defined by the task. receiving a user input, via a user interface , identifying a task to be performed; determining if one or more software packages local to a task query apparatus are configured to perform the task; if it is determined that at least one software packages local to the task query apparatus is configured to perform the task, performing the task using a local software package; if it is determined that no software packages local to the task query apparatus are configured to perform the task, the method further comprising: generating a task based query at a task query apparatus , wherein the task based query is generated based on the user input and identifies the user identified task to be performed; causing the task based query to be provided from the task query apparatus to a remote service discovery engine ; and receiving, at the task query apparatus , from the remote service discovery engine and as a response to the task based query, an indication of a remote service of a plurality of remote services that is configured to perform the user identified task, the indication comprising access instructions for querying the remote service; and accessing the remote service to provide requested functionality defined by the task. generating a task based query at a task query apparatus , wherein the task based query is generated based on the user input and identifies the user identified task to be performed; causing the task based query to be provided from the task query apparatus to a remote service discovery engine ; and receiving, at the task query apparatus , from the remote service discovery engine and as a response to the task based query, an indication of a remote service of a plurality of remote services that is configured to perform the user identified task, the indication comprising access instructions for querying the remote service; and accessing the remote service to provide requested functionality defined by the task. <EOS>