way to extract interfaces and abstract classes