make it OOP & remove toImage()