Similarity and analogical reasoning: a synthesis