more flexible copy