with new data structure