using map::emplace to allow non-default ctors

yay