base on CI