map constructor