#43 add copy and move constructor and assignment operator