added lower/upper bound algorithms