Mobile applications are difficult to write without middleware providing fundamental mobile-computing services. These services include reliable asynchronous messaging, data storage and synchronization, disconnected publication and subscription, transcoding data to a format appropriate for a particular device and network connection, and service discovery. Much of this work draws on IBM's research in data management.