move ExtenededData to it's own interface and make the classes, that need it, implement it.
fix issue with Lists, and add IsTexture to Material class (non-texture materials have a null texture)
create and implement interfaces for all core classes (for type casting)