add data classes, such a mess!