use HashWithIndifferentAccess to make it easier to access keys