solver loop should not need temporary variables