use emplace to get around make_pair compat issues