used Copy to implement Pass and Ret