allow direct set init use move