added upper version bounds