reorganize data struct