add data crud functions