If this is meant to be subclassed for each sprite, did you intend for this class to be abstract? Are there ever any cases where you need to create an instance of ImageManager?