explicit move semantics without copying