A computer-implemented method of extending functionality of an ereader module that is displaying an electronic book ("ebook"), the method comprising: receiving, at a server, from a client device executing the ereader module, a user identifier specifying a user using the client device, an ebook identifier specifying the ebook displayed by the ereader module, and a page range specifying a range of pages within the ebook displayed by the ereader module; determining, based on the user identifier, one or more layers available for the user, each layer being a tool that enables the user to interact with particular ebook content; determining one or more layers available to use with the ebook specified by the ebook identifier; assembling a list of one or more layers available for the specified user to use with the specified ebook; and transmitting the layer list from the server to the client device to enable the user to select a layer and use the selected layer to interact with content of the ebook; the method further comprising: transmitting, to the client device, layer data associated with the user, the ebook, the page range, and layers on the layer list, wherein the layer data comprises an annotation that was created by a layer; wherein transmitting the layer data comprises: identifying a first version of the ebook cached on the client device; identifying a second version of the ebook stored in an ebook repository; and localizing the position of the layer data within the first version of the ebook to a position within the second version of the ebook; and transmitting, to the user device, the layer data stored at the position within the second version of the ebook. receiving, at a server, from a client device executing the ereader module, a user identifier specifying a user using the client device, an ebook identifier specifying the ebook displayed by the ereader module, and a page range specifying a range of pages within the ebook displayed by the ereader module; determining, based on the user identifier, one or more layers available for the user, each layer being a tool that enables the user to interact with particular ebook content; determining one or more layers available to use with the ebook specified by the ebook identifier; assembling a list of one or more layers available for the specified user to use with the specified ebook; and transmitting the layer list from the server to the client device to enable the user to select a layer and use the selected layer to interact with content of the ebook; the method further comprising: transmitting, to the client device, layer data associated with the user, the ebook, the page range, and layers on the layer list, wherein the layer data comprises an annotation that was created by a layer; wherein transmitting the layer data comprises: identifying a first version of the ebook cached on the client device; identifying a second version of the ebook stored in an ebook repository; and localizing the position of the layer data within the first version of the ebook to a position within the second version of the ebook; and transmitting, to the user device, the layer data stored at the position within the second version of the ebook. transmitting, to the client device, layer data associated with the user, the ebook, the page range, and layers on the layer list, wherein the layer data comprises an annotation that was created by a layer; wherein transmitting the layer data comprises: identifying a first version of the ebook cached on the client device; identifying a second version of the ebook stored in an ebook repository; and localizing the position of the layer data within the first version of the ebook to a position within the second version of the ebook; and identifying a first version of the ebook cached on the client device; identifying a second version of the ebook stored in an ebook repository; and localizing the position of the layer data within the first version of the ebook to a position within the second version of the ebook; and transmitting, to the user device, the layer data stored at the position within the second version of the ebook.