be precise in copying semantics