initial commit for branch with data() functions that preserve references