fix bugs with std::move