1. A method of controlling a controllable device remotely using one or more remote devices, the method comprising: storing at the controllable device an association between a data structure stored on the controllable device and credential information of the one or more remote devices, wherein the data structure comprises a table listing (1) a plurality of functions performed by the controllable device and (2) a plurality of instructions which causes the controllable device to perform the plurality of functions; transmitting availability of the controllable device for control by the one or more remote devices; receiving, in response to the transmitting, a request for authorization to control the controllable device from a first remote device of the one or more remote devices, wherein the request includes the credential information of the first remote device; accepting the request if the credential information of the first remote device is recognized by the controllable device; and transmitting from the controllable device to the first remote device a data structure associated with the first remote device.