using zip.
define factory object to hide the implementation details.