a reusable 2d image component