separate data gathering and updating to a mixin