struct and data separated