improved data structure