add duplicate check