Adding encode/decode of maps (and nested maps)