more accurate upper bounds