calibration now works statelessly