added Image, deferred function, viewport, and extend wrapper function