apparently I shouldn't std::move on return, let's pray to the compiler