safer upper bound