add move and copy function
add phpunit