On the congruence subgroup problem