Refactored asset image types to use inheritance
Refactored types to use factories