Analogical Thinking: A Method For Solving Problems