modified some implementation of dataxfer