added generic Type to interfaces and created empty abstract classes for inheritance and generic type casting