add `copy` method