~ initialize members in head file
~ use unordered_map instead of map
~ minor change
~ minor changes
! fix: should auto scroll to the selected item