add structure for offline reading