I chaged my mind again, this data structure should be more flexible