recalculate only when all fields filled