explanation for Map type