Big ass refactoring!!!!

Changed structure from Abstract+subclasses to 1 class with enum
property. results in many missing textures :P