use map for optional params