add readmode function