Two of the most important types of abstraction deal with how we can take a complex system and break it into simpler pieces that can then be considered separately. These two types of abstraction are a division into parts, and division into specialization. Colloquially, these are known by the terms ``has-a'' and ``is-a'' abstraction. For example, a car has an engine, but a car is a means of transportation.