make items more generic, and add an unsynced method to MemoryDatasource