added base upper bound