Added interfaces and classes that implement them