#15 optimise shuffle engine by create a hash table.