add duplicate check [ci skip]