implemented data coherency: uses single struct for all data, data is updated in one function, data is sent by one function