separated model logic to allow rerunning model under different parameters, wihtout additional read/writes to spreadsheet