better image implementation