improve data structure