added upper bound