learnAndDisambiguate impl