add html component; refactored existing components to use deffereds; done issue #37