split `data` method; fix copy