added self_dataIO