use fmap instead of map.