Types of Implementations