separated handling of literal {map} from (map kcon vcon) for more intuitive semantics
make `map` optional arguments truly optional