image factory
create image through factory