still need a map constructor