with comments and additions to _data()