added upper bound analysis