Added move copy and assign