added adaptive