fix cares
some optimization