add struct DataAddr to decide the the address