added upper and lower bound