take arg pairs or a map