move data into struct
only recalculate based on updated params occasionally