add non-class swap, and emplace_back