avoid unnecessary copies