The first thing I implemented in TAGE was images and sprites.
An image is the data describing an image, like for example the width, height and pixel data.
A sprite on the other hand, is describing where on the screen an image should be rendered. Several sprites can refer to the same image data, but rendering that image to different places on the screen.
So I have ”static” data (the image) and ”runtime” data (the sprite). This split in data is a concept that I use for many parts of the engine, like for animations, sound and backgrounds.