Depend on package 'keys' and use mapWithKeyM, etc.