avoid needless computations when possible