added type convesion to move_on_copy