Can someone give me a clever way to implement mapKeysMaybe, defined as follows?

Ord k => (k -> Maybe k) -> Map k a -> Map k a

where the transformed keys that evaluate to Just are the only ones kept?

I am thinking this will probably help me understand a new type, like traversable or something.