add data input/output methods