implement move ctor and move assignment operator